求给定limi下的素数和

2024-09-24 02:19:59 发布

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

我知道存在类似的问题,但我想知道我的代码有什么问题。提前谢谢!你知道吗

isum = 0
l = list(range(2, uplim + 1))

while l != []:
    isum += l[0]
    temp = list(range(l[0], uplim + 1, l[0]))
    l = list(set(l) - set(temp))

print(isum)

说明:第一次循环执行将向sum变量中添加2(作为列表中的第一项),并从列表中删除所有2的倍数。3现在将是列表中的第一个项,它将被添加到isum中,然后所有3的倍数都将被删除。5现在将是第一个术语(因为4被删除-是2的倍数)等等


Tags: 代码列表rangetemplist术语sumprint
1条回答
网友
1楼 · 发布于 2024-09-24 02:19:59

集合无序。代码背后的想法是可以的,但是将列表转换为集合会丢失排序信息,而将列表转换回列表会产生比随机排序更糟糕的排序;即使在统计上,您也无法对此做出任何保证。l的第一个元素不能保证是最低的,所以不能保证它是素数,一切都会变成地狱。你知道吗

相关问题 更多 >