有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是一个范围内的所有毕达哥拉斯三胞胎

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

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);
                }
            }
        }
    }

但不幸的是,我得到了重复的三胞胎,例如:3,4,5和4,3,5
我怎样才能克服这个问题


共 (1) 个答案

  1. # 1 楼答案

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

    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);
                    }
                }
            }
        }
    

    请注意,内部循环是不必要的,因为您可以直接从ab计算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);
                }
            }
        }