我正在尝试编写一个python函数来返回小于给定值和所有素数值的素数数目。我需要使用Eratosthenes的Sieve算法。我相信我在函数中缺少了一些东西 - 例如,当我想找到100以下的素数时。我得到的全部是2,3,5,7。我意识到如果我不使用“平方根” ,我可以得到所有我需要的素数;但我被告知我需要在那里包含平方根。有人可以看看我的代码,让我知道我错过了什么吗?谢谢你的时间。Python中的Eratosthenes的筛选器
def p(n):
is_p=[False]*2 + [True]*(n-1)
for i in range(2, int(n**0.5)):
if is_p[i]:
yield i
for j in range(i*i, n, i):
is_p[j] = False
我在这里应该提到,你的逻辑确实找到了直到n的所有素数,即'is_p'只有for循环结束时的素数索引具有'True'。唯一的问题是'产量'没有足够的次数。 – Nik
感谢您的提示!真的很感激它! – user2203774