给定一个非负整数 c ,你要判断是否存在两个整数”a”和”b”,使得”a2 + b2 = c”。c++
时间: 2024-12-23 22:16:52 浏览: 4
这个问题是在寻找是否存在两个整数 a 和 b,它们满足平方和等于给定的非负整数 c 的条件,即 \( a^2 + b^2 = c \)。这是一个经典的数学问题,可以用一些算法技巧来解决,特别是在 C++ 中。
一种常见的解法是使用“鸡兔同笼”的思想或者遍历所有可能的整数对 (a, b),因为 a 和 b 都是非负整数,所以它们的最大值应该是 sqrt(c)。然后检查每个整数是否能作为另一个整数的平方根,并计算其平方是否等于 c 减去已知平方的结果。如果找到这样的组合,则返回 true;否则返回 false。
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool judgeSquareSum(int c) {
for (int i = 0; i <= sqrt(c); ++i) {
int complement = c - i * i;
if (complement > 0 && sqrt(complement) == floor(sqrt(complement))) { // 检查complement是否为另一个整数的平方
return true;
}
}
return false;
}
int main() {
int c;
cout << "Enter a non-negative integer c: ";
cin >> c;
bool result = judgeSquareSum(c);
if (result) {
cout << "There exist two integers a and b such that a^2 + b^2 = " << c << endl;
} else {
cout << "No such pair of integers exists." << endl;
}
return 0;
}
```
阅读全文