gpt4 book ai didi

python - 在 Python 中使用埃拉托色尼筛法时出现索引错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:10:58 24 4
gpt4 key购买 nike

当尝试使用埃拉托色尼筛法算法查找素数时,使用了以下代码。执行时给出索引错误。

我找不到索引超出范围的原因。我正在使用 Python 2.7

"""
This program will find all the prime numbers up to the entered number using Sieve of Eratosthenes Algorithm
"""

while True:
print "\n" * 3
list1 = []
final = []
max = raw_input("Enter number upto which you want to find prime numbers or enter 0 to exit :")
if max.isdigit():
d = int(max)
for i in range (2,d):
list1.append(i)
print list1

k = 0
x = 0

while True:
temp = list1[k]
final.append(temp)
length = len(list1)

if (k+1) != length:
for x in range(k+1,length):
temp1 = list1[x]
temp2 = final[k]
if temp1 % temp2 == 0:
del list1[x]
k += 1
else:
break

print(final)

else:
print ("Invalid Input...!!")
continue

最佳答案

您要从列表中删除元素,这会使列表变短(因此,最初可以检查的元素将超出范围。也就是说,一旦删除 4,您会发现错误寻找第 5 个元素。验证这一点的一种方法是抛出一个

import pdb; pdb.set_trace()

在您的代码中,每次都打印出 list1。您可以使用 c前进到下一个循环迭代。

解决方案是将 list1 复制到名为 primes 的列表中开始,然后从 primes 中删除元素而不是 list1 .

关于python - 在 Python 中使用埃拉托色尼筛法时出现索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49174658/

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