最小公倍数: 两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。
最小公倍数=两数的乘积/最大公约(因)数。
求最大公约数:
辗转相除法:
有两整数a和b:
① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行①
辗转相除法的证明:
有两整数a和b,设a=k*b+r, 所以r=a mod b
设c为a,b的一个公约数
则a mod c=0,b mod c=0,
因为r=a-k*b, 所以 r mod c=0
所以 c是b,r的公约数
设d为a,b的最大公约数
那么d必然是r的约数,
现在要证d是b,r的最大公约数
因为a=kb+r,那么b,r的公约数也是a的约数,
假设b, r的最大公约数=e
且d是b, r的公约数,则e mod d=0
且e是a, b的公约数,则d mod e=0
所以d=e
d是b,r的最大公约数
例如
24/15余9
15/9余6
9/6余3
6/3=0,即3为最大公约数
求出最大公约数后,最小公倍数则不难求出
#include<cstdio>
int main(){
int a,b,c,m,n;
while(scanf("%d %d",&a,&b)!=EOF){
m=a;
n=b;
c=m%n;
while(c!=0){
m=n;
n=c;
c=m%n;
}
printf("%d",a*b/n);
printf("\n");
}
return 0;
}