算法竞赛中的数学模板积累
最大公约数(GCD)
//求x和y的最大公约数
long long gcd(long x,long long y){
if(x % y != 0) return fun(y , x % y);
else return y;
}
最小公倍数(LCM)
结论:
对于两个数正整数n和m,有
\[gcd(n,m)*lcm(n,m) = n*m
\]
则我们可以根据这个结论得到最小公倍数的算法
\[lcm(m,n)=n*m/gcd(n,m)
\]
一般为了防止long long溢出 我们都会使用
\[lcm(n,m) = n/gcd(n,m)*m
\]
long long gcd(long x,long long y){
if(x % y != 0) return fun(y , x % y);
else return y;
}
cout<<n/gcd(n,m)*m<<endl;

浙公网安备 33010602011771号