我是一般的編程新手,我試圖在Python中使用「Goldbach Theorie」,每個數字在3和給定數字之間(在我的情況50)獲取代碼以停止將列表添加到另一個列表,如果它的總和已經存在
lijst2 = []
for n in lijst:
j = 2*n+1
lijst2.append(j)
priemgetallen = [2]
counter = 2
x = 2
while len(priemgetallen)<50:
priemgetallendelers = []
for i in range (1,counter+1):
if counter % i == 0:
priemgetallendelers.append(i)
if len(priemgetallendelers) == 2:
priemgetallen.append(counter)
counter += 1
else:
counter +=1
上面的代碼是不重要的我的問題,只是在那裏更容易瞭解我試圖做的。
while not len(sommen) == len(lijst2):
for i in lijst2:
for j in priemgetallen:
for r in priemgetallen:
for t in priemgetallen:
if i == j+r+t:
在這裏,我想說,如果我的原始列表中的數字是由三個素數總和組成的,請將其添加到列表中。
sommen2 = []
sommen2.append(j)
sommen2.append(r)
sommen2.append(t)
所以直到這裏的一切接縫的工作,但如果我讓它打印出來的輸出,我得到了幾次相同的「我」或者說從質數相同的總和。
for q in sommen:
if not sum(sommen2) == sum(q):
sommen.append(sommen2)
這裏我想說的是,如果q的總和已經存在,請不要再添加一個。 Bu代替我的筆記本計算很長一段時間。
print (sommen)
爲什麼'lambda x:sum(x)'當你可以使用'sum'?此外,「輸出」有點誤導 - 這不能是程序的實際輸出嗎?它不會以目前的形式找到實際的分解。 Upvoted for itertools' – Pigpag
@Pigpag編輯的解決方案,將顯示哪些因素進入總和。 –
我想用你的選擇,因爲它是可以理解的,但在我的情況下,它是一個我不允許導入Itertools的練習 – Hendrik