首页 > 解决方案 > 查找数字的毕达哥拉斯三元组

问题描述

我写了一个程序来找到一个数字的毕达哥拉斯三元组。代码如下。

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。

标签: javapythagorean

解决方案


对于这个毕达哥拉斯三元组,可能有不止一个解决方案,条件是,第二个“if”中的“break”在达到较低的数字(即 102)后终止,它永远不会达到 119,


推荐阅读