这是来自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();
}
}
}
但是我尝试“简化”只是增加了更多步骤。有什么想法吗?
答案 0 :(得分:4)
在内循环测试中,并非所有数字都高达i。如果你只测试一半的i
就足够了 for (int j = 2; j <= i/2; j++)
答案 1 :(得分:0)
for (int j = 2; j < i; j++)
不要试图破坏它,考虑一个自然数N,你可以用它计算因子。也许你可以减少你必须检查的数字量?
查找分解整数以获取更多信息/不同算法。
答案 2 :(得分:0)
从外部循环设置索引平方上的内部循环的长度 每个数字最大因子是他的正方形