2

これは、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
4

1 に答える 1

3

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

つまり、すべての数はその数の約数です。上記の証明 (その構成) によると、これより小さい数はありません。

于 2013-03-12T00:49:47.933 に答える