1063: 最大公约与最小公倍
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2890 Solved: 1112
Submit Status Web Board
Description
输入两个正整数,输出其最大公约数和最小公倍数。
Input
输入两个正整数n和m(n,m<=1000000)。输入保证最终结果在int范围内。
Output
输出两个整数,用空格隔开。表示m和n的最大公约数和最小公倍数。
Sample Input
4 6
Sample Output
2 12
HINT
注意运算过程中的溢出问题
源代码一:
#include <stdio.h>
#include <stdlib.h>
int grd(int m,int n)
{
int r;
r=m%n;
if(r==0)
return n;
else
return grd(n,r);
}
int main()
{
int m,n,g;
scanf("%d%d",&m,&n);
g=grd(m,n);
printf("%d %d\n",g,m/g*n);
system("pause");
return 0;
}
源代码二:
#include <stdio.h>
#include <stdlib.h>
int hrf(int u,int v)
{
int t,r;
if(u<v)
{t=v;v=u;u=t;}
while((r=u%v)!=0)
{
u=v;
v=r;
}
return v;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",hrf(m,n));
system("pause");
return 0;
}