找出一个数的毕达哥拉斯三元组

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,