C语言中经典20例(最大公约数和最小公倍数)

在C语言中,计算两个整数的最大公约数(Greatest Common Divisor,简称GCD)和最小公倍数(Least Common Multiple,简称LCM)是常见的算法问题。下面我将分别对这两个概念进行文字讲解,并提供相应的C语言实现方法。

最大公约数(GCD)

最大公约数是指两个或多个整数共有约数中最大的一个。例如,8和12的最大公约数是4。

计算方法:

1.辗转相除法(欧几里得算法)
用较大数除以较小数,再用除数除以上一次的余数,如此循环,直到余数为0,此时的除数即为最大公约数。

C语言实现:

 
#include <stdio.h>

int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int main() {
    int num1 = 24, num2 = 36;
    printf("最大公约数为:%d\n", gcd(num1, num2));
    return 0;
}
 

最小公倍数(LCM)

最小公倍数是指两个或多个整数公有的倍数中最小的一个。例如,4和6的最小公倍数是12。

计算方法:

1.利用最大公约数
最小公倍数等于两数之积除以它们的最大公约数。

C语言实现:

 
#include <stdio.h>

int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int lcm(int a, int b) {
    return a / gcd(a, b) * b;
}

int main() {
    int num1 = 24, num2 = 36;
    printf("最小公倍数为:%d\n", lcm(num1, num2));
    return 0;
}
 

通过以上代码,我们可以计算出两个整数的最大公约数和最小公倍数。辗转相除法是计算最大公约数的高效方法,而最小公倍数的计算则是基于最大公约数的结果。在实际编程中,这两个函数经常一起使用。

猜你喜欢

转载自blog.csdn.net/lxsxjsj/article/details/143082615