我知道存在类似的问题,但我想知道我的代码有什么问题。提前谢谢!你知道吗
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的倍数)等等
集合无序。代码背后的想法是可以的,但是将列表转换为集合会丢失排序信息,而将列表转换回列表会产生比随机排序更糟糕的排序;即使在统计上,您也无法对此做出任何保证。
l
的第一个元素不能保证是最低的,所以不能保证它是素数,一切都会变成地狱。你知道吗相关问题 更多 >
编程相关推荐