1063: 最大公约与最小公倍
题目描述
输入两个正整数,输出其最大公约数和最小公倍数。
输入
输入两个正整数n和m(n,m<=1000000)。输入保证最终结果在int范围内。
输出
输出两个整数,用空格隔开。表示m和n的最大公约数和最小公倍数。
样例输入
4 6
样例输出
2 12
提示
注意运算过程中的溢出问题
最小公倍数=两个数相乘/最大公因数
#include <stdio.h>
int main() {
int m, n, a, b, c; //b,c是用来保存数值的变量
scanf("%d %d", &m, &n);
b = n, c = m;
while (1) {
a = n % m;
if (a == 0)
break;
n = m;
m = a;
}
printf("%d %d", m, b / m * c); //这里计算最小公倍数是先用除法再用乘法,其目的是防止溢出
return 0;
}