zzuli OJ 1063: 最大公约与最小公倍

时间:2022-09-22 00:36:50

Description

输入两个正整数,输出其最大公约数和最小公倍数。

Input

输入两个正整数n和m(n,m<=1000000)。输入保证最终结果在int范围内。

Output

输出两个整数,用空格隔开。表示m和n的最大公约数和最小公倍数。

Sample Input

4 6

Sample Output

2 12

HINT

注意运算过程中的溢出问题

Source


#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\n", b, copyA / b * copyB); //先除再乘,避免中间结果溢出
    return 0;
}