题目:1063
题目描述
输入两个正整数,输出其最大公约数和最小公倍数。
输入
输入两个正整数n和m(n,m<=1000000)。输入保证最终结果在int范围内。
输出
输出两个整数,用空格隔开。表示m和n的最大公约数和最小公倍数。
样例输入
4 6
样例输出
2 12
提示
注意运算过程中的溢出问题
#include <stdio.h>
int main()
{
int m, n, a, i, max, min;
scanf("%d %d", &m, &n);
for (i = m;; i++) //这里不设置循环终点
{
if (i % m == 0 && i % n == 0) //一旦遇到能同时整除m和n的数,直接跳出循环
{
min = i;
break;
}
}
while (m % n) //这几行代码与1062题一样,不再详细说明
{
a = m % n;
m = n;
n = a;
}
max = n;
printf("%d %d", max, min);
return 0;
}