如何让这个Python代码更快地运行? [项目欧拉问题#7]
发布时间:2020-12-20 13:05:38 所属栏目:Python 来源:网络整理
导读:我正在尝试完成Project Euler挑战: By listing the first six prime numbers: 2,3,5,7,11,and 13,we can see that the 6th prime is 13. What is the 10 001st prime number? 我的代码似乎是正确的,因为它适用于小数字,例如6th prime是13. 我如何改进它,以
|
我正在尝试完成Project Euler挑战:
我的代码似乎是正确的,因为它适用于小数字,例如6th prime是13. 我如何改进它,以便代码将更快地运行更大的数字,如10 001. 代码如下: #Checks if a number is a prime
def is_prime(n):
count = 0
for i in range(2,n):
if n%i == 0:
return False
break
else:
count += 1
if count == n-2:
return True
#Finds the value for the given nth term
def term(n):
x = 0
count = 0
while count != n:
x += 1
if is_prime(x) == True:
count += 1
print x
term(10001)
更新: 谢谢你的回复.我应该更清楚,我不是要加速翻译或找到更快的解释器,因为我知道我的代码不是很好,所以我正在寻找使我的代码更有效的方法. 解决方法
需要思考的几个问题:
>你真的需要检查分区直到n-1?你多久能停下来?>除了2,你真的需要用两个的倍数来检查除法吗?> 3的倍数怎么样? 5?有没有办法将这个想法扩展到以前测试的素数的所有倍数? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读
