这是为了计算 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..20 的最小公倍数是 232792560。
要得到这个数字,您只需查看数字 1 到 20。您至少需要所有素数:2、3、5、7、11、13、17 和 19。
此外,计算 4 时还需要 2,计算 16 时还需要两个 2。要得到 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
即所有数字都是该数字的约数;根据上面的证明(其构造),没有更小的数字。
关于Python While循环计算最小公倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351266/