python求第n个质数_找到第n个质数:麻木

我试图用埃拉霍斯特内斯的筛子找到第n个质数。

是的,我看到了类似的帖子,但是我对这段代码有一个问题。

一旦找到第n个素数,我就停止算法。我写的是:def nth_prime(n):

limit = 10**2

pn = 1 #keeps track of how many prime numbers we have found

sieve = range(3, limit, 2)

top = len(sieve)

for si in sieve:

if si:

pn += 1

print pn, si #used to check while coding

if pn == n:

return si #loop breaks when the nth prime is found

else:

bottom = (si*si - 3)/2

if bottom >= top:

break

sieve[bottom::si] = [0] * -((bottom-top)//si)

print nth_prime(11)

但它不起作用。至少不是我想的那样。如果我添加回流过滤器(无,筛子)[n-2]效果良好。但我希望它在第n个素数停止计算。

以下是输出:

^{pr2}$

我希望它能持续到:...

11 31

如果函数能够正确计算所有筛到极限的筛分,为什么输出会这样?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值