1063: 最大公约与最小公倍

题目描述

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

输入

输入两个正整数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\n", b, copyA / b * copyB); //先除再乘,避免中间结果溢出 
    return 0; 

posted @ 2018-06-27 15:07  Binary_tony  阅读(899)  评论(0编辑  收藏  举报