最大公约数
cpp
int gcd(int a,int b){
if (b==0)return a;
else return gcd(b,a%b);
}
熟练了可以写成:
cpp
int gcd(int a,int b){
return b ? gcd(b,a%b):a;
}
值得注意的是:让a和b均为非负数,可以使用algorithm下的abs(int x)和cmath下的fabs(double x);
最大公倍数是在最大公约数的基础上:
最大公倍数等于
cpp
a*b/gcd(a,b)
但由于a*b可能溢出,因此可以修改为
cpp
a/gcd(a,b)*b;