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