最小公倍数

10 分钟

两个数公共倍数里最小的,叫最小公倍数(LCM)。它和最大公约数是搭档:

道理是 把公共因数乘了两遍,除掉一份 就正好。

写代码时要"先除后乘",别真的先算

int lcm(int a, int b) {
    return a / gcd(a, b) * b;   // 先除,再乘,防溢出
}

为什么先除更安全?因为 可能大到爆掉 int,而 一定能被 整除,先除不会有小数损失,还把数值压小了,再乘 b 就不容易溢出。

常见坑:写成 a * b / gcd(a,b)a*b 先算就可能溢出,即使最终 LCM 不大也会错;多个数求 LCM 要两两滚动地做,中途仍可能溢出,必要时用 long long。记住"先除后乘"这四个字。

小纸条

为什么先除后乘更安全?

登录 后可看答案

最小公倍数 · 考级冲刺 · op599 课程