这是为了计算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
答案 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
即。所有数字都是所述数字的除数;根据上面的证据(它的结构),没有更小的数字。