Problem Description
输入两个正整数,求它们的最大公约数与最小公倍数。
Input
输入两个正整数,两个整数之间用空格分开。
数据保证在 int 范围内。
Output
第一行输出最大公约数;
第二行输出最小公倍数。
答案保证在 int 范围内。
Sample Input
64 48
Sample Output
16
192
源代码
#include<stdio.h>
int main()
{
int x,y,m,n;
scanf("%d %d",&x,&y);
m=x*y;
while(y!=0)
{
n=x%y;
x=y;
y=n;
}
printf("%d\n",x);
printf("%d\n",m/x);
return 0;
}
下面是我家任先生的:
(虽然有点麻烦,但他好厉害的,原创在这里https://blog.csdn.net/weixin_44408138)
#include<stdio.h>
int main()
{
int a,b;
int i,k;
scanf("%d %d",&a,&b);
if(a>0&&b>0)
{
if(a<b)
{
for(i=b-1;i>0;i--)
{
if(a%i==0&&b%i==0)
{
printf("%d\n",i);
break;
}
}
for(k=a+1;k<2147483647;k++)
{
if(k%a==0&&k%b==0)
{
printf("%d\n",k);
break;
}
}
}
else if(a==b)
{
printf("%d\n%d\n",a,a);
}
else
{
for(i=a-1;i>0;i--)
{
if(a%i==0&&b%i==0)
{
printf("%d\n",i);
break;
}
}
for(k=b+1;k<2147483647;k++)
{
if(k%a==0&&k%b==0)
{
printf("%d\n",k);
break;
}
}
}
}
else
return 0;
}