我正在尝试使用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
我认为它有效,但处理速度太慢。 有没有办法加强它? (不使用内存中设置的素数)。谢谢!
答案 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)
将循环运行到数字的平方根。这将降低复杂性。