本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
代码一:
#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n,s,t;
scanf("%d %d",&m,&n);
for(s=1000;s>0;s--)
{
if((m%s)==0&&(n%s)==0){
break;
}
}
t=m*n/s;
printf("%d %d",s,t);
return 0;
}
代码二:
#include<stdio.h>
int main()
{
int x,y,m,n,t;
scanf("%d %d",&m,&n);
x=m;
y=n;
while(y!=0){
t=x%y;x=y;y=t;
}
printf("%d %d",x,m*n/x);
return 0;
}
代码三:
#include<stdio.h>
int main(){
int a,b,m,n,x;
scanf("%d %d",&a,&b);
if (a<b){
x=a;
a=b;
b=x;
}
m=a;
n=b;
while(n!=0&&m%n!=0){
x=m;
m=n;
n=x%n;
}
m=a*b/n;
printf("%d %d",n,m);
return 0;
}