找到2到100之间的数字因子

时间:2014-11-22 00:38:30

标签: java for-loop

我试图在Java中获得从2到100的数字因子。

    boolean bSqrt = true;
    int sqrt;

    for (int i = 2; i <= 100; i++) {
        System.out.print("Factors of " + i + ": ");

        sqrt = (int) Math.sqrt(i);
        for (int j = 2; j <= sqrt; j++) {
            if ((i % j) == 0) {
                if(j != sqrt)
                    System.out.print(j + " ");
                if (j != (i / j))
                    System.out.print(i / j + " ");
                if (bSqrt & sqrt != (i / j) & sqrt != j & ((i % sqrt) == 0)) {
                    System.out.print(sqrt + " ");
                    bSqrt = false;
                }
            }
        }
        bSqrt = true;
        System.out.println();
    }

但是这段代码无法得到4,6,8,25等的正确答案。这可能是因为它迭代了i的sqrt,也因为条件&#39; if(j) != sqrt)&#39; (这是因为因子j有时可以等于i的sqrt,sqrt肯定是i的因子,稍后会在代码中打印出来。所以我想知道如何修复代码并改进代码以提供正确的答案。

1 个答案:

答案 0 :(得分:0)

提示:您需要了解sqrt优化背后的数学;即在内循环中不迭代到100的数学证明。 (这很简单......)

一旦你理解了这一点,看看你的代码实际在那时做了什么......并将它与你的(新的)数学理解所说的应该正在做。