我正试图完成Project Euler's 10th problem,但我目前拥有的代码花费了太多时间,无法完成。你知道吗
我四处查看了一下,但还没有找到如何缩短代码的编写时间。你知道吗
这是我的代码:
def IsPrime(num):
for i in range(2, num/2):
if num % i == 0:
prime = False
return prime
prime = True
return prime
def SumOfPrime(limit):
primesum=2+3 #For some reason my prime finder doesn't allow numbers below 5
for check in range(5,limit):
prime=IsPrime(check)
if prime == True:
primesum += check
return primesum^2
print(SumOfPrime(2000000))
正确的答案应该是142913828922
,但是,正如前面提到的,我没有完全得到输出。有没有办法让这段代码更快?你知道吗
加快实施的一些技巧:
如果您想要更有效的算法,请签出https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
使用Eratosthenes筛:
在我的机器上大约四分之一秒。你知道吗
你应该用一个筛的埃拉托斯烯。忽略这一点,此返工应使您的时间少于10秒:
在
isPrime()
中将偶数作为特例处理,然后只处理奇数除数。使用理解或生成器表达式会将更多循环代码下推到C级别,通常会使您的速度更快一些。你知道吗相关问题 更多 >
编程相关推荐