Python While 循环计算最小公倍数
这个代码是用来计算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
也就是说,所有这些数字都是这个数字的因子;根据上面的证明(它的构造方式),没有比这个更小的数字了。