1063: 最大公约与最小公倍
时间限制: 1 Sec 内存限制: 30 MB
[提交] [状态] [讨论版] [命题人:eilene]
题目描述
输入两个正整数,输出其最大公约数和最小公倍数。
输入
输入两个正整数n和m(n,m<=1000000)。输入保证最终结果在int范围内。
输出
输出两个整数,用空格隔开。表示m和n的最大公约数和最小公倍数。
样例输入 Copy
4 6
样例输出 Copy
2 12
提示
注意运算过程中的溢出问题
来源/分类
#include<stdio.h>
#include<math.h>
int main()
{
int max(int a,int b)
{
int h1,h2;
if(a>=b)
{
h1=a%b;
if(h1==0)
{
return b;
}
else
{
while(h1!=0)
{
h2=b%h1;
if(h2==0)
{
return h1;
break;
}
b=h1;
h1=h2;
}
}
}
else
{
h1=b%a;
if(h1==0)
{
return a;
}
else
{
while(h1!=0)
{
h2=a%h1;
if(h2==0)
{
return h1;
break;
}
a=h1;
h1=h2;
}
}
}
}
int x,y,k,u=1,i;
scanf("%d %d",&x,&y);
k=max(x,y);
for(i=1;i<=u;i++)
{
if(i%x==0&&i%y==0)
break;
u++;
}
printf("%d %d",k,i);
}