【最小公倍数】
定义:最小公倍数(LCM)是两个或多个整数的公倍数中最小的一个。
例如:18和24的最小公倍数是72;20和50最小公倍数是100
在数学上,最小公倍数简写为(设两数为a,b):[a,b]
【两种特殊情况与一个定理】
两种特殊情况:
1、两数为倍数关系,LCM为较大的数
2、两数互质,LCM为两数之积
一个定理:[A,B]×(A,B)=A×B
咋求?
别急,我们慢慢来……
【数学:短除法】
小学,最最最常用的短除法
【两种解法】
第一种:无法避免的穷举
【穷举法】
int lcm(int a,int b){
for(int i=a;1;i+=a){
if(i%b==0){
return i;
}
}
}
可惜是时间复杂度有点高了,有没有其他方法呢?
可想而知:当然有!!!
第二种解法需要运用到上面讲的定理:[A,B]×(A,B)=A×B
所以第二种解法可想而知:
求最大公因数一除不就OK了
【最大公因数求最小公倍数】
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
if(b==0){
return a;
}
return gcd(b,a%b);
}
int main(){
int x,y;
scanf("%d%d",&x,&y);
long long LCM=x*y/gcd(x,y);
printf("%lld",LCM);
return 0;
}