Python中给定数字下的Primes总和

时间:2016-05-16 05:13:45

标签: python python-3.x primes

我编写了以下代码块来计算低于某个数字-2 000 000的所有质数的总和,在这种情况下确切,但执行需要相当长的时间; 20秒:

$('.known').attr('style', 'display:block');

所以我想知道是否有办法让我的代码更有效率。我非常感谢你提供合适的建议。此外,我更愿意你提供更基本的解决方案,因为我是初学者,并提供相同的逻辑。非常感谢!

1 个答案:

答案 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。可以节省一些冗余并可能改善参考的位置。