我试图实施类似于Eratosthenes筛选的东西。我想从集合中删除给定范围内的所有非素数,并将所有素数总结为给定数字。
:visited
显然我收到了错误 -
在迭代期间设置更改的大小
我是python的新手,所以语法不熟悉。据我从其他线程理解,我可以使用字典并在number_set.keys()上使用for循环(对吗?),但我想问一下,是否有可能纠正这个for循环?
答案 0 :(得分:1)
你必须停止修改迭代器。 我的方法是在修改后重新启动迭代,尝试修改集合,例如每个已处理的值都不会被重新处理,也许可以在一天内调用它。
您遇到的例外只是对不喜欢同时迭代和修改的集合的限制。
number_set = set(list(range(1, given_number)))
sum_number = 0
done = False
while not done:
for num in number_set:
if isPrime(num):
sum_number += num
prime_set = set(list(range(0, big_number, num)))
number_set -= prime_set
break
done = True
print(sum_number)
免责声明:脚本可能需要对您进行调整,我只是说明逻辑