2013-03-12 40 views
2

這是爲了計算1-20的最小公倍數。Python while循環來計算最小公倍數

我似乎無法弄清楚爲什麼while循環不會結束。誰能幫我嗎?

i = 1 
j = 1 
factors = 0 
allfactor = False 
while allfactor == False: 
    while j < 21: 
     if i % j == 0: 
      factors = factors + 1 
      j = j + 1 
     else: 
      break 
    if factors == 20: 
     allfactor = True 
     break 
    else: 
     i = i + 1 
     j = 1 
     factors = 0 
+0

@poke:您應該將其作爲答案! – 2013-03-12 00:48:06

+0

@DavidRobinson謝謝,完成了。 – poke 2013-03-12 00:50:08

回答

3

數字1..20的最小公倍數是。

要到這個數字,你只需要看看數字1到20,你至少需要所有質數:2,3,5,7,11,13,17和19

在此外,還需要再過2〜4計算,和另外兩個2S爲16.爲了得到一個9,你還需要其他3

所以你最終獲得:

2 * 2 * 2 * 2 * 3 * 3 * 5 * 7 * 11 * 13 * 17 * 19 = 232792560 

而且你可以很容易地確認使用Python:

>>> all(map(lambda x: 232792560 % x == 0, range(1, 21))) 
True 

I.e.所有數字都是所述數字的除數;並且根據上面的證明(其構造),沒有更小的數字。

+0

謝謝!太棒了。不過,我更感興趣的是爲什麼代碼無法運行,因爲我正在嘗試學習Python。 – David 2013-03-12 00:51:46

+1

你的代碼確實有效,它只需要*年齡*直到'j'達到'232792560'。 – poke 2013-03-12 00:58:23

+0

哎呀,謝謝! – David 2013-03-12 01:08:34