Kiểm tra một số có phải chính phương hay không mà không dùng phép căn bậc hai. Ví dụ 1024 là chính phương, 1000 thì không.
Thuật toán: duyệt i từ 1 đến khi i² > n. Nếu n chia hết cho i và n/i == i thì là chính phương.
Thuật toán
isPerfectSquare(n)
begin
for i := 1, i² ≤ n, tăng i 1:
nếu n chia hết cho i và n / i = i thì
trả về true
done
trả về false
end
Ví dụ
#include <iostream>
using namespace std;
bool isPerfectSquare(int number) {
for (int i = 1; i * i <= number; i++) {
if ((number % i == 0) && (number / i == i)) {
return true;
}
}
return false;
}
int main() {
int n = 1024;
if(isPerfectSquare(n)){
cout << n << " is perfect square number";
} else {
cout << n << " is not a perfect square number";
}
}
Kết quả
1024 is perfect square number