我编写了以下代码块来计算低于某个数字-2 000 000的所有质数的总和,在这种情况下确切,但执行需要相当长的时间; 20秒:
$('.known').attr('style', 'display:block');
所以我想知道是否有办法让我的代码更有效率。我非常感谢你提供合适的建议。此外,我更愿意你提供更基本的解决方案,因为我是初学者,并提供相同的逻辑。非常感谢!
答案 0 :(得分:2)
您可以从实施更好的算法开始。例如:Sieve of Eratosthenes
或者如果您对当前的逻辑感到满意,那么很少有可以提供帮助的优化:
仅检查奇数:
for i in range(3, n, 2):
仅检查表单6n+1, 6n+5
您不需要对每次迭代进行此检查:elif i == math.ceil(math.sqrt(n)):
。如果控制超出循环,则数字为素数
您可以将check_prime
转换为generator pattern
。可以节省一些冗余并可能改善参考的位置。