gpt4 book ai didi

java - projecteuler-3 质因数除法中的 if vs while 循环

转载 作者:行者123 更新时间:2023-11-29 02:59:44 25 4
gpt4 key购买 nike

今天,我使用 projecteulers 问题练习了我的编码测试。在做质因数除法时,我偶然发现了一些我觉得很奇怪的事情。这是相关代码(res 是一个 ArrayList):

for (int x = 2; x <= n; x++){       
if (n % x == 0){
System.out.println("Prime found: " + x);
res.add(x);
n = n / x;
}
}

将 1000 分成 [2, 4, 5, 25]。一段时间后,我尝试用 while 循环替换 if 语句,它打印出正确答案 [2, 2, 2, 5, 5, 5]。

显然有一些我不明白的地方,有人可以向我解释一下吗?

编辑:

较新的代码:

for (int x = 2; x <= n; x++){       
while (n % x == 0){
System.out.println("Prime found: " + x);
res.add(x);
n = n / x;
}
}

最佳答案

区别在于:

  • 如果您使用if,则每个数字只测试一次。因此,如果您能够取出 2,则只能尝试一次。下一个可以取出的数字是 4,尽管它不是质数。这同样适用于 5 resp。 25.
  • 如果您使用 while,您将测试每个数字,直到您知道它不再在要测试的数字中。

关于java - projecteuler-3 质因数除法中的 if vs while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35846056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com