公约数和公倍数
小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。
输入第一行输入一个整数n,表示有n组测试数据;
随后的n行输入两个整数i,j。输出输出每组测试数据的最大公约数和最小公倍数
样例输入3
6 6
12 11
33 22
样例输出6 6
1 132
11 66
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,n,yue,bei,min,max,q;
scanf("%d",&n);
while(n--)
{
scanf("%d %d",&i,&j);
if(i>j)
{
max=i;
min=j;
}
else
{
max=j;
min=i;
}
if(max%min==0)
yue=min;
else
{
while(min!=0)//辗转相除法求公约数
{
q=max%min;
max=min;
min=q;
}
yue=max;
}
bei=i*j/yue;//两个数的公倍数等于乘积除以公约数
printf("%d %d\n",yue,bei);
}
return 0;
}