Python While循环计算最小公倍数

标签 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..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/

相关文章:

python - Flask 教程 - 404 Not Found

python - 我的 CSV 编写器代码在字符之间写入分隔符而不是字符串

java - 如何防止我的变量永远持续下去?

c - 为什么下面的程序会陷入循环?

python - 如何使用.format将列表元素插入字符串并输出多个字符串?

python - 错误 Tensorflow 找不到字段 google.protobuf.EnumDescriptorProto.EnumReservedRange.start

c# - C#在 'x'行数之后暂停streamreader输出,然后继续

python - 通过两个函数运行循环,将彼此的输出作为输入

c++ - 限制项目条目 C++

python - 使用 mysql 在 python 中的 while 循环中选择