我需要重构内循环方面的帮助。我想要一种更有效的方法,包括更少的迭代。
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();
}
}
这是我迄今为止所做的尝试:
int j = 2;
do{
if ((i % j) == 0) System.out.print(j + " ");
System.out.println();
j++;
} while (j < 2);
这只打印出第一个因素,我一生都无法弄清楚如何让它遍历整个列表。我知道我在语义上遗漏了一些东西,但这让我抓狂。
最佳答案
您只需运行从 2
到 Math.sqrt(i)
的 j
for 循环,因为如果您找到了一个因子i
的 j
小于或等于 Math.sqrt(i)
,那么你也找到了对应的因子 i/j
大于或等于 Math.sqrt(i)
并且您也可以打印该因子(除非 j == i/j
,那么不要将相同的因子打印两次)。
关于java - 减少数学分解过程中的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18493989/