在以下循环中:
while (j <= number / 2)
需要将数字除以2是多少? 它会影响构建程序的运行时间吗?
答案 0 :(得分:1)
如果这个条件是从测试number
是否为素数的方法中获取的,那么它应仅测试它是否可以按j
除以j <= Math.sqrt(number)
,j <= number/2
j <= number
太过分了。不过,它比测试所有{{1}}提供了更好的性能。
答案 1 :(得分:1)
是的,它将运行时间缩短了一半(*)。
您无需检查大于一半数字的数字。它们不是因素。
但这是一个非常宽松的上限。你可以提前停止(在平方根处:会有比平方根更大的因子,但你已经通过该对的另一个因子找到了那些因素)。
(*)如果你在循环的顶部只计算一次number/2
,那就是。如果你在每次迭代中反复计算它,你会再次浪费相当多的节省。