找到低于给定限制的素数之和

时间:2013-11-24 12:27:27

标签: python sum primes

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

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的倍数)等。

1 个答案:

答案 0 :(得分:0)

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