欧几里得算法直接用于求最大公因数gcd(a, b),策略就是初中数学给的辗转相除法,递归边界为两数其中一个变成了0。
最大公因数gcd
直接给出递归代码:
int gcd(int a, int b){
if(b == 0) return a;
else return gcd(b, a%b);
}
当然还有个简短的QwQ
int gcd(int a, int b){
return !b ? a : gcd(b, a % b);
}
大家不妨思考一下上面的代码需不需要满足a > b这一条件
最小公倍数lcm
求最小公倍数lcm(a, b)的时候,易得最小公倍数就是两数之积除以最大公因数
令d = gcd(a, b),lcm = a/d*b (为了避免数字过大溢出,我们采用先除后乘的办法)