最小公倍数

什么是最小公倍数?

对于 ,若有 使得 ,则称 公倍数。公倍数不止一个,其中最小的称为最小公倍数,记作 . 用数学语言描述就是

如何求解最小公倍数?

引理

互质,则 .

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)

References