1
我试图实现类似于Eratosthenes的Sieve。我想从集合中删除给定范围内的所有非素数,并将所有素数总和为给定数。在迭代在python中迭代时删除集合
我是新来的Python这样的语法不熟悉
设置改变大小 -
number_set = set(list(range(1, given_number))) sum_number = 0 for num in number_set: if isPrime(num): sum_number += num prime_set = set(list(range(0, big_number, num))) number_set -= prime_set print(sum_number)
很显然,我得到了错误。据我所知,从其他线程,我可以使用字典和使用for循环number_set.keys()(右?),但我想问,是否有可能纠正这个循环?
这甚至不会工作,因为集合是无序的,它肯定是可能的,20将在5之前排出,所以这种筛分方法将不起作用。 –
没有任何理由在把它交给设置构造函数之前将生成器转换为列表 – SwiftsNamesake
你想在这一行调用'number_set - = prime_set'做什么?看起来像两组之间的差异?如果这是Python 2,也许尝试'difference_update()'? – simplycoding