Một số được cho là số bình phương hoàn hảo nếu căn bậc hai của số đó là một số nguyên. Nói cách khác, khi căn bậc hai là một số nguyên thì số đó được gọi là số bình phương hoàn hảo.
Chúng ta có thể kiểm tra bình phương hoàn hảo bằng cách tìm căn bậc hai của số đó và so khớp với i nhiều lần để có được căn bậc hai chính xác. Khi căn bậc hai vượt qua giá trị, nó không phải là một số bình phương hoàn hảo.
Nhưng ở đây để giảm bớt công sức, chúng ta đã không kiểm tra lại căn bậc hai. Như chúng ta biết rằng căn bậc hai của một số bình phương hoàn hảo là một số nguyên, sau đó chúng ta có thể tăng căn bậc hai lên một và kiểm tra xem có khớp vuông hoàn hảo hay không.
Đầu vào và Đầu ra
Input: A number to check: 1032 Output: 1032 is not a perfect square number.
Thuật toán
isPerfectSquare(num)
Đầu vào: Số lượng.
Đầu ra: Đúng nếu một số là số bình phương hoàn hảo và cũng in ra căn bậc hai.
Begin if num < 0, then exit sqRoot := 1 sq := sqRoot^2 while sq <= num, do if sq = num, then return sqRoot sqRoot := sqRoot + 1 sq := sqRoot^2 done otherwise return error End
Ví dụ
#include<iostream> using namespace std; int isPerfectSquare(int num) { if(num < 0) return -1; //a -ve number is not a valid square term int sqRoot = 1, sq; while((sq =(sqRoot*sqRoot)) <= num) { //when square of square root is not crossed the number if(sq == num) return sqRoot; sqRoot++; //as square root of a perfect square is always integer } return -1; } int main() { int num, res; cout << "Enter a number to check whether it is perfect square or not: "; cin >> num; if((res = isPerfectSquare(num)) != -1) cout << num << " is a perfect square number, square root: " << res; else cout << num << " is not a perfect square number."; }
Đầu ra
Enter a number to check whether it is perfect square or not: 1032 1032 is not a perfect square number.