c++判断一个数是否为完全平方数
时间: 2023-08-22 21:06:04 浏览: 225
可以使用牛顿迭代法进行判断,具体代码如下:
```c++
bool isPerfectSquare(int num) {
if(num == 1) return true;
long long x = num / 2;
while(x * x > num) {
x = (x + num / x) / 2;
}
return x * x == num;
}
```
在代码中,我们首先特判 num = 1 的情况,然后初始化 x = num / 2,然后使用牛顿迭代法进行求解。如果 x * x 大于 num,则将 x 更新为 (x + num / x) / 2,直到 x * x 等于 num 或者 x * x 小于 num 为止。
最后,我们只需要判断 x * x 是否等于 num 即可判断 num 是否为完全平方数。注意在进行计算时,为了避免 overflow,我们将 x 和 num 定义为 long long 类型。
相关问题
用 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` 函数来判断该数是否为完全平方数,并输出结果。
阅读全文