c语言求最大公约数和最小公倍数

下面分别介绍C语言中求最大公约数和最小公倍数的方法。

求最大公约数

最大公约数(Greatest Common Divisor,简称GCD),指两个或多个整数共有约数中最大的一个。可以使用辗转相除法求解,C语言代码如下:

#include <stdio.h>
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a % b);
    }
}
int main() {
    int a = 12, b = 18;
    int result = gcd(a, b);
    printf("最大公约数为:%d\n", result);
    return 0;
}

上述代码中,定义了一个gcd函数,用于求解两个数的最大公约数。如果b等于0,则返回a,否则递归调用gcd函数,传入参数ba%b,直到b等于0时返回结果。在main函数中,调用gcd函数,求解12和18的最大公约数,并输出结果。

求最小公倍数

最小公倍数(Least Common Multiple,简称LCM),指两个或多个整数公有的倍数中最小的一个。最小公倍数等于两个数的乘积除以它们的最大公约数。因此,可以使用上述求最大公约数的gcd函数来求解最小公倍数,C语言代码如下:

#include <stdio.h>
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a % b);
    }
}
int lcm(int a, int b) {
    return a * b / gcd(a, b);
}
int main() {
    int a = 12, b = 18;
    int result = lcm(a, b);
    printf("最小公倍数为:%d\n", result);
    return 0;
}

上述代码中,定义了一个lcm函数,用于求解两个数的最小公倍数。在lcm函数中,调用gcd函数求解两个数的最大公约数,并将两个数的乘积除以最大公约数即可得到最小公倍数。在main函数中,调用lcm函数,求解12和18的最小公倍数,并输出结果。