Python While 循环计算最小公倍数

2 投票
1 回答
1646 浏览
提问于 2025-04-17 18:45

这个代码是用来计算1到20之间的最小公倍数的。

我不知道为什么这个循环一直没有结束。有没有人能帮我解决这个问题?

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 个回答

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

也就是说,所有这些数字都是这个数字的因子;根据上面的证明(它的构造方式),没有比这个更小的数字了。

撰写回答