【发布时间】:2018-11-15 15:36:29
【问题描述】:
我正在尝试使用 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
我认为它可以正常工作,但是处理速度太慢。 有什么办法可以增强吗? (不使用内存中设置的素数)。谢谢!
【问题讨论】:
-
也许可以试试
for x in range(2, int(math.sqrt(number))+1):? -
感谢范忠。关键字是“Erastothenes 筛”
标签: python algorithm performance math