Python Prime Sum计划

时间:2018-06-06 04:06:37

标签: python algorithm performance math

我正在尝试使用python来解决Project Euler的问题。

我遇到的问题是添加到低于2百万的所有素数。

我的代码:

import math

def isPrime(number):
if number == 2:
    return True
for x in range(2,number):
    if number % x ==0:
        return False
return True

number = 3
ans = 2 
while number<=2000000:
    if(isPrime(number)):
       print(number)
       ans+=number
    number+=2

我认为它有效,但处理速度太慢。 有没有办法加强它? (不使用内存中设置的素数)。谢谢!

2 个答案:

答案 0 :(得分:1)

def is_prime(number):
  if number == 2:
    return True
  for x in range(2, int(math.sqrt(number)) + 1):
    if number%x == 0:
      return False
  return True

如果您确定在给定数字的平方根之前没有可以除以给定数字的数字,那么您可以将其标记为 prime 。无需检查number - 1。虽然稍有改进,但在你的情况下可能很重要。

答案 1 :(得分:0)

将循环运行到数字的平方根。这将降低复杂性。