Java 范围内的所有毕达哥拉斯三胞胎

Java 范围内的所有毕达哥拉斯三胞胎,java,math,duplicates,Java,Math,Duplicates,如果我想找到特定范围内的所有毕达哥拉斯三胞胎,我编写了以下代码: for (int a = 1; a < range; a++) { for (int b = 1; b < range; b++) { for (int c = 1; c < range; c++) { if (a * a + b * b == c * c) { System.out.println(a

如果我想找到特定范围内的所有毕达哥拉斯三胞胎,我编写了以下代码:

for (int a = 1; a < range; a++) {
        for (int b = 1; b < range; b++) {
            for (int c = 1; c < range; c++) {
                if (a * a + b * b == c * c) {
                    System.out.println(a + "," + b + "," + c);
                }
            }
        }
    }
for(int a=1;a
但不幸的是,我得到了重复的三胞胎,例如:3,4,5和4,3,5

如何克服此问题?

您可以通过更改循环来删除重复项,尤其是在每个循环开始的地方:

for (int a = 1; a < range; a++) {
        for (int b = a + 1; b < range; b++) {
            for (int c = b + 1; c < range; c++) {
                if (a * a + b * b == c * c) {
                    System.out.println(a + "," + b + "," + c);
                }
            }
        }
    }
for (int a = 1; a < range; a++) {
        for (int b = a + 1; b < range; b++) {
            double c = Math.sqrt(a*a + b*b)
            if (c == int(c)) {
                System.out.println(a + "," + b + "," + c);
            }
        }
    }