問題概略
1 から 20 までのすべての整数で割りきれる最小の自然数を求めよ。
for ループで最小公倍数を計算
答えは 1 から 20 までの数の最小公倍数です。LCM を繰り返しとると解けます。
from sympy import lcm ans = 1 for i in range(2, 21): ans = lcm(ans, i) print(ans)
reducdeで畳み込み
という繰り返しを reduce で書いてみました。
from sympy import lcm from functools import reduce print(reduce(lambda x, y: lcm(x, y), range(1, 21)))