算法竞赛中的数学模板积累

最大公约数(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;
posted @ 2022-06-07 09:54  Zhe8468  阅读(69)  评论(0)    收藏  举报