已知勾股数之和求有几组c++的写法
时间: 2024-03-21 13:41:58 浏览: 88
已知勾股数之和,求有几组勾股数的问题,可以用 C++ 来实现。以下是两种常见的实现方式:
方法一:暴力枚举
```c++
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int count = 0, sum;
for (int a = 1; a <= 1000; a++) {
for (int b = a + 1; b <= 1000; b++) {
sum = a * a + b * b;
int c = sqrt(sum);
if (c * c == sum && a + b + c == 1000) {
count++;
}
}
}
cout << count << endl;
return 0;
}
```
方法二:利用勾股数的性质
由勾股数的性质可知,当勾股数 a 和 b 固定时,勾股数 c 可以由勾股数 a 和 b 推导出来。因此,可以在枚举 a 和 b 的过程中,直接计算出 c 的值,不需要再使用 sqrt 函数计算平方根。
```c++
#include <iostream>
using namespace std;
int main() {
int count = 0, sum;
for (int a = 1; a <= 1000; a++) {
for (int b = a + 1; b <= 1000; b++) {
sum = a * a + b * b;
int c = 1000 - a - b;
if (c * c == sum) {
count++;
}
}
}
cout << count << endl;
return 0;
}
```
以上两种方法的时间复杂度均为 O(n^2),其中 n 为勾股数的最大值。方法二的计算速度一般比方法一更快,因为它少了一次求平方根的操作。
阅读全文
相关推荐









