找出一个数的毕达哥拉斯三元组
Find pythagorean triple of a number
我编写了一个程序来查找一个数的毕达哥拉斯三元组。代码如下。
public static void pythagoreanTriplet(int n) {
int i, j, k, count = 0;
for (i = 1; i <= n; i++) {
if (n == i)
break;
j = (n * n - 2 * n * i) / (2 * n - 2 * i);
k = n - i - j;
if ((i * i + j * j == k * k) && j > 0 && k > 0) {
System.out.println(i + " " + j + " " + k);
count++;
break;
}
}
if (count != 1) {
System.out.println("Impossible");
}
}
此代码适用于除一个以外的所有数字。如果输入n = 408,输出应该是119 120 169,但是我的代码输出是102 136 170.
这个毕达哥拉斯三元组可能有不止一种解法,条件,
第二个“if”中的“break”在达到较低的数字即 102 后终止,它永远不会达到 119,
我编写了一个程序来查找一个数的毕达哥拉斯三元组。代码如下。
public static void pythagoreanTriplet(int n) {
int i, j, k, count = 0;
for (i = 1; i <= n; i++) {
if (n == i)
break;
j = (n * n - 2 * n * i) / (2 * n - 2 * i);
k = n - i - j;
if ((i * i + j * j == k * k) && j > 0 && k > 0) {
System.out.println(i + " " + j + " " + k);
count++;
break;
}
}
if (count != 1) {
System.out.println("Impossible");
}
}
此代码适用于除一个以外的所有数字。如果输入n = 408,输出应该是119 120 169,但是我的代码输出是102 136 170.
这个毕达哥拉斯三元组可能有不止一种解法,条件, 第二个“if”中的“break”在达到较低的数字即 102 后终止,它永远不会达到 119,