本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:

输入在一行中给出两个正整数M和N(1000)。

输出格式:

在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044

提交:

#include <stdio.h>
//最大公约数:两个数所有公有质因数的乘积
//最小公倍数:两个数所有共有质因数和其各自独有质因数的乘积
//即最大公约数 = 两数之积/最小公倍数 如 4 =2*2,6=2*3   2=4*6 / 2*2*3
int main() {
    
    int m,n;
    scanf("%d %d",&m,&n);
    int yushu;
    yushu = m%n;
    int x;
    x = m*n;
    if (yushu == 0) printf("%d %d",n,x/n);
    else {
        while(yushu != 0){//辗转相除法 
            m = n;
            n = yushu;
            yushu = m%n;
        }
        printf("%d %d",n,x/n);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/cgy-home/p/15073987.html