埃拉托斯特尼斯筛法算法

2024-10-01 15:41:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个函数,用来计算素数,用埃拉托什筛。我有一个错误我不明白为什么。你知道吗

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

Tags: 函数inforlendef错误rangeremove
1条回答
网友
1楼 · 发布于 2024-10-01 15:41:06

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

你需要重新考虑一下你重新实现这个筛子的方法。我不能百分之百地遵循你的方法,但我相信这可能涉及到第二个列表。白名单,不要黑名单:)。你知道吗

而且,^{}是一个很酷的函数。你知道吗

相关问题 更多 >

    热门问题