c++判断一个数是否为完全平方数
时间: 2024-05-15 08:13:02 浏览: 467
可以使用牛顿迭代法求解一个数的平方根,然后判断平方根是否为整数。
代码如下:
```c++
bool isPerfectSquare(int num) {
if (num < 1) {
return false;
}
long x = num;
while (x * x > num) {
x = (x + num / x) / 2;
}
return x * x == num;
}
```
首先判断数是否小于 1,如果小于 1 就不可能是完全平方数,直接返回 false。
然后使用牛顿迭代法求解 num 的平方根,迭代停止条件是 x*x <= num。
最后判断 x*x 是否等于 num,如果相等就是完全平方数,返回 true;否则不是完全平方数,返回 false。
相关问题
用 c++判断一个数是否为完全平方数
判断一个数是否为完全平方数可以使用二分法,我们可以从1到num/2进行二分查找,找到一个数mid,然后计算mid*mid是否等于num,如果等于,说明num是完全平方数,返回true;如果mid*mid大于num,则在左半部分查找;如果mid*mid小于num,则在右半部分查找。如果最后没有找到完全平方数,则说明num不是完全平方数,返回false。下面是C++代码实现:
```
bool isPerfectSquare(int num) {
int left = 1, right = num / 2;
while (left <= right) {
long long mid = (left + right) / 2;
if (mid * mid == num) {
return true;
} else if (mid * mid < num) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return false;
}
```
判断一个数是否为完全平方数 C++
判断一个数是否为完全平方数可以通过求平方根的方法来实现,如果该数的平方根是整数,则该数为完全平方数。
以下是 C++ 代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool isPerfectSquare(int num) {
int root = sqrt(num);
return root * root == num;
}
int main() {
int num;
cout << "请输入一个正整数:";
cin >> num;
if (isPerfectSquare(num)) {
cout << num << " 是完全平方数。";
} else {
cout << num << " 不是完全平方数。";
}
return 0;
}
```
其中 `isPerfectSquare` 函数用来判断一个数是否为完全平方数,通过求平方根来实现。在主函数中,首先输入一个正整数,然后调用 `isPerfectSquare` 函数来判断该数是否为完全平方数,并输出结果。
阅读全文