从键盘输入两个正整数 a 和 b,求其最大公约数和最小公倍数。

算法思想:
利用格式输入语句将输入的两个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。

#include <stdio.h>

//求最小公倍数
int _lcm(int a, int b) {
    int lcm;
    if (a > b)
        lcm = a;
    else
        lcm = b;
    while (lcm % a || lcm % b)
        lcm++;
    return lcm;
}

//求最大公约数
int _gcd(int a, int b) {
    int gcd;
    if (a > b)
        gcd = b;
    else
        gcd = a;
    while (a % gcd || b % gcd)
        gcd--;
    return gcd;
}

int main(void) {
    int x, y;
    printf("请输入两个数:");
    scanf("%d%d", &x, &y);
    printf("最小公倍数:%d\n", _lcm(x, y));
    printf("最大公约数:%d\n", _gcd(x, y));
    return 0;
}

输出结果:

请输入两个数:16 72
最小公倍数:144
最大公约数:8

技术要点:

实例中用到了辗转相除法来求最大公约数。在求最小公倍数时要清楚最大公约数和最小公倍数的关系,即两数相乘的积除以这两个数的最大公约数就是最小公倍数。