两个整数的最大公约数是能同时整除它们的最大正整数。
核心思想:gcd(a, b) = gcd(b, a % b),直到 b = 0 时,a 即为结果。
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}示例:gcd(48, 18)
lcm(a, b) = a × b / gcd(a, b)
int lcm(int a, int b) {
return a / gcd(a, b) * b; // 先除后乘防溢出
}C++17 起可直接使用 __gcd(a, b) 或 中的 gcd(a, b)。
