题目描述
输入两个正整数,输出其最大公约数和最小公倍数。
输入
输入两个正整数n和m(n,m<=1000000)。输入保证最终结果在int范围内。
输出
输出两个整数,用空格隔开。表示m和n的最大公约数和最小公倍数。
样例输入
4 6
样例输出
2 12
提示
注意运算过程中的溢出问题#include<stdio.h>
int main()
{
int a, b, r;
int copyA, copyB;
scanf("%d%d", &a, &b);
copyA = a;
copyB = b;
while(r = a % b, r != 0) //当余数不为0,用(b,r)更新(a,b)
{
a = b;
b = r;
}
printf("%d %d
", b, copyA / b * copyB); //先除再乘,避免中间结果溢出
return 0;
}