首页 > 解决方案 > java中的费马大定理

问题描述

我被要求创建一个算法,该算法可以打印方程式 a^n+b^n=c^n 的所有可能组合,而不会重复。给定的输入是一个限制和数字的力量。我使用 3 个嵌套循环来解决这个问题(没有共谋限制),但我无法解决重复问题。例如,

输入:2(pow),20(限制)

我的输出:3,4,5

4,3,5

5,12,13

6,8,10

8,6,10

8,15,17

9,12,15

12,5,13

12,9,15

12,16,20

15,8,17

16,12,20

正确的输出:

3,4,5

5,12,13

6,8,10

8,15,17

9,12,15

 public static void Fermat(int n,int range) {
        int temp = 0;
        double x, y, z;
        for (int a = 1; a <= range; a++) {
            for (int b = 1; b <= range; b++) {
                for (int c = 1; c <= range; c++) {
                    x = Math.pow(a, n);
                    y = Math.pow(b, n);
                    z = Math.pow(c, n);
                    if (x + y == z) {
                        System.out.println(a + "," + b + "," + c);
                    }
                }
            }
        }
    } 

标签: javaloopsfor-loopmath

解决方案


尝试收紧你的限制:

for (int a = 1; a <= range; a++) {
    for (int b = a; b <= range; b++) {
        for (int c = b; c <= range; c++) {
...

推荐阅读