题目描述
输入两个正整数,求它们的最大公约数与最小公倍数。
输入
多组输入 ,第一行输入你下面输入的数据组数量
输入两个正整数,两个整数之间用空格分开。
数据保证在 int 范围内。
输出
第一行输出最大公约数;
第二行输出最小公倍数。
答案保证在 int 范围内。
样例输入 Copy
2 64 48 18 15
样例输出 Copy
16 192 3 90
源代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c,d,i,N;
scanf("%d",&N);
for(i=0;i<N;i++)//保证可以输入N组数
{
scanf("%d %d",&a,&b);
c=a*b;//存储最开始输入的a,b的值
//辗转相除法求最大公约数
while(a%b!=0)
{
d=a%b;
a=b;
b=d;
}
//如果a小于b,则余数d的值为a,下一步运算就变成大数除以小数
//如果a%b==0,则while语句不执行,输出的b的值是上一步中d的值
//例:a=4,b=8; 第一步,d=4;a=8;b=4;第二步,a%b==0,输出b=4
printf("%d\n",b);
printf("%d\n",c/b);//最小公倍数等于两个数相乘再除以最大公约数
}
return 0;
}