减少Java中内循环迭代的次数以提高效率

时间:2016-03-04 15:08:53

标签: java loops for-loop nested continue

这是来自Java教科书的小型挑战。 以下代码可以更高效(通过减少内循环迭代的次数,可能使用continue语句)。

/*
    Use nested loops to find factors of numbers
    between 2 and 100. 

    In the program, the outer loop runs i from 2 through 100. The inner loop successively tests
    all numbers from 2 up to i, printing those that evenly divide i.

*/

class FindFactors {
    public static void main (String args[]) {

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


            System.out.println();
        }
    }
}

但是我尝试“简化”只是增加了更多步骤。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

在内循环测试中,并非所有数字都高达i。如果你只测试一半的i

就足够了
 for (int j = 2; j <= i/2; j++)

答案 1 :(得分:0)

for (int j = 2; j < i; j++)

不要试图破坏它,考虑一个自然数N,你可以用它计算因子。也许你可以减少你必须检查的数字量?

查找分解整数以获取更多信息/不同算法。

答案 2 :(得分:0)

从外部循环设置索引平方上的内部循环的长度 每个数字最大因子是他的正方形