最小公倍数
什么是最小公倍数?
对于 ,若有 使得 且 ,则称 是 的公倍数。公倍数不止一个,其中最小的称为最小公倍数,记作 . 用数学语言描述就是
如何求解最小公倍数?
引理
若 互质,则 .
Theorem
简要证明:
设 ,则有 ,且 互质。若非如此, 中还能提取公约数放到 中,这与 是最大公约数矛盾。因此 ,再把 乘回来得 . 于是,
考虑到 gcd 和 lcm 通常取正职,而 可能为负,所以加上绝对值。
有了上面的结论,我们只要求得 的最大公约数,即可得到,
算法实现
def gcd(a, b):
return a if b == 0 else gcd(b, a % b)
def lcm(a, b):
return a * b / gcd(a, b)