若一个正整数n可以表示成两个正整数的平方差,则称n是一个智慧数。编写一个函数int IsWisenum(int n),判断正整数n是否智慧数,若是返回1,不是返回0。
时间: 2023-12-14 20:37:47 浏览: 63
python 输入一个正整数判断它是不是素数 示例
5星 · 资源好评率100%
可以利用枚举的方式来解决这个问题。具体地,从1到n/2枚举一个数x,然后计算n-x^2是否是一个完全平方数,若是则说明n可以表示成两个正整数的平方差,即n是一个智慧数。
下面是实现这个函数的代码:
```c++
#include <cmath>
int IsWisenum(int n) {
for (int x = 1; x <= n / 2; x++) {
int y = n - x * x;
if (y > 0 && sqrt(y) == (int)sqrt(y)) {
return 1;
}
}
return 0;
}
```
其中,sqrt函数用于计算一个数的平方根,需要包含cmath头文件。注意,这个函数存在一个缺陷,即无法处理大于2的31次方减1的数(即INT_MAX),因为这个数的平方已经超过了long long类型的最大值。
阅读全文