我正在尝试使用python来解决Project Euler的问题。
我遇到的问题是将所有小于200万的素数相加。
我的代码:
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我认为它正在工作,但是它的处理速度太慢了。有什么方法可以增强它吗?(不使用内存中设置的质数)。谢谢!
发布于 2018-06-06 12:13:16
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如果你确保不存在除以给定数字的平方根的数字,那么你可以将其标记为素数。在number - 1之前不需要检查。虽然是一个很小的改进,但在您的情况下可能意义重大。
发布于 2018-06-06 12:17:53
运行你的循环直到数字的平方根。这将降低复杂性。
https://stackoverflow.com/questions/50712114
复制相似问题