Python While循环计算最小公倍数

时间:2013-03-12 00:38:41

标签: python loops while-loop

这是为了计算1-20的最小公倍数。

我似乎无法弄清楚为什么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

1 个答案:

答案 0 :(得分:3)

数字1..20中最不常见的倍数是 232792560

要获得该数字,您只需要查看数字1到20.您至少需要所有素数:2,3,5,7,11,13,17和19。

另外,你需要另外2个来计算4个,另外2个需要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

即。所有数字都是所述数字的除数;根据上面的证据(它的结构),没有更小的数字。