输入样例:511 292
输出样例:73 2044
#include <stdio.h>
int gcd(int m,int n){
int r;
r=n%m;
while(r!=0){
m=n;
n=r;
r=m%n;
}
return n;
}
int lcm(int m,int n){
int re;
int t1=m,t2=n;
re=t1*t2/gcd(t1,t2);
return re;
}
int main ( )
{
int m,n;
scanf("%d %d",&m,&n);
int min;
min=m;
if(m>n){min=n;n=m;m=min;}
int mingys=gcd(m,n);
printf("%d %d",mingys,lcm(m,n));
return 0;
}
首先输出格式可以自己改
样例:gcd=73
lcm=2044
只需在return 0之前的printf处改为:
printf(“gcd=%d\n lcm=%d”,mingys,lcm(m,n));
大致做法就是用辗转相除法找到最小公约数(min gys)
原理书本都有介绍,百度知道里也有;