gpt4 book ai didi

python - 埃拉托色尼筛法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:52:18 25 4
gpt4 key购买 nike

我有这个函数可以用埃拉托色尼筛法计算素数。我有一个错误,我不明白为什么。

def era1(n):

llista1 = []
llista2 = []
i = 2

while(i<(n+1)):
llista1.append(i)
i = i + 1

while (llista1[0]<(n**0.5)):
llista2.append(llista1[0])
for j in range ((len(llista1))-1):
if (llista1[j] % llista1[0] == 0) : #<------- error list index out of range
llista1.remove(llista1[j])
llista1.remove(llista1[0])
print llista2

最佳答案

这是在遍历列表时删除列表中的项目的结果。您已经指定您的 for 循环运行 n 次,但是当您到达第 n 个项目时,曾经存在的项目已经移回了几个索引,因为您从列表中删除项目。

您需要重新考虑重新实现 Sieve 的方法。我不能 100% 遵循您的方法,但我确信它可能涉及到有一个辅助列表。白名单,不要黑名单:)。

此外,enumerate()是一个值得研究的很酷的函数。

关于python - 埃拉托色尼筛法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46754729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com