C++验证已知正整数A>B>C,且A+B+C<100,求满足1/A^2+1/B^2=1/C^2的所有数组
时间: 2023-11-17 21:08:30 浏览: 43
由题意可得:$C^2=\frac{A^2B^2}{A^2+B^2}$,设 $k=\frac{AB}{\gcd(A,B)}$,则 $\gcd(A,B)|C$。
又因为 $A,B,C<100$,所以 $k<100$,枚举 $k$,再枚举 $\gcd(A,B)$ 的因子即可得到满足条件的 $(A,B,C)$。
C++ 代码如下:
```cpp
#include <iostream>
using namespace std;
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int main() {
for (int k = 1; k < 100; k++) {
for (int d = 1; d <= k; d++) {
if (k % d != 0) continue;
int ab = d * (k / d), g = k / d;
for (int a = g + 1; a <= 2 * g; a++) {
if (a * a - g * g <= ab) break;
if (gcd(a, g) != 1) continue;
int b2 = a * a - g * g;
if (b2 % ab != 0) continue;
int b = b2 / ab;
if (b <= g) continue;
int c = a * b / g;
if (c * c != a * a * b * b / (a * a + b * b)) continue;
cout << a << ' ' << b << ' ' << c << endl;
}
}
}
return 0;
}
```