はじめに
数学において、最小公倍数(Least Common Multiple:LCM)は、2 つ以上の数で割り切れる最小の正の整数であり、余りを残さずに割り切れます。たとえば、4 と 6 の LCM は 12 です。なぜなら、12 は 4 と 6 の両方で割り切れる最小の数だからです。
最小公倍数
引数として数値のリストを受け取り、それらの最小公倍数を返す関数lcm(numbers)を書きます。関数は、2 つの数xとyの最小公倍数を計算するために次の式を使用する必要があります。lcm(x, y) = x * y / gcd(x, y)。ここで、gcd(x, y)はxとyの最大公約数です。
この問題を解くには、functools.reduce()関数を使用して、リスト内のすべての数にlcm()の式を適用することができます。また、2 つの数の最大公約数を計算するためにmath.gcd()関数を使用することもできます。
from functools import reduce
from math import gcd
def lcm(numbers):
return reduce((lambda x, y: int(x * y / gcd(x, y))), numbers)
lcm([12, 7]) ## 84
lcm([1, 3, 4, 5]) ## 60
まとめ
このチャレンジでは、functools.reduce()とmath.gcd()関数を使って、数値のリストの最小公倍数を計算する方法を学びました。lcm()関数は、2 つの数の最小公倍数を計算するためにlcm(x, y) = x * y / gcd(x, y)の式を使っています。