【发布时间】:2015-08-22 09:35:37
【问题描述】:
我在 python 上写了这个 sn-p 来解决项目 Euler 问题 #10,但是我已经等了 15 分钟(运行这段代码),它仍然没有结束。
请帮助我改进或优化此代码。
这里是sn-p:
def prime (n):
f = 1 #flag
for i in range(2,n):
if n % i == 0:
f = 0
return f
s = 0 # Sum
for i in range(2,2000000):
if prime(i) == 1:
s = i + s
print s
【问题讨论】:
-
嗯 - 最简单的事情是 - 你不必一直跑到 n 来找出素数,sqrt(n) 会让它运行得更快。
-
@gabhijit 立即返回会使它更快:)
-
哦,是的! @alik - 抱歉错过了! :)
-
另一个简单的事情是直接返回值,而不是继续循环遍历其他所有内容,甚至只是
return all(n%i != 0 for i in range(2,n))。
标签: python performance helpers