📜  maximo comun divisor - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:02:54.881000             🧑  作者: Mango

C 编程语言中的最大公约数

C 编程语言中,求解两个数的最大公约数是常见的问题。最大公约数指的是两个或多个整数共有的约数中最大的数,用于数学、科学等领域。

方法

求解两个数的最大公约数,可以使用如下方法:

  1. 穷举法:从较小的数开始,不断递减,判断是否能同时被两个数整除。直到找到两个数的最大公约数为止。

  2. 辗转相除法(欧几里得算法):对两个数进行连续的除法操作,直到两数余数为0时,前一个余数即为最大公约数。

    int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }
    
  3. 更相减损术:对两个数进行连续相减操作,直到两数相等时,即为最大公约数。

在实际应用中,常用辗转相除法进行求解。

代码

辗转相除法的 C 代码如下:

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

其中,ab 分别为待求最大公约数的两个数。

性能

辗转相除法的时间复杂度为 O(logn),即两个数中较小的数的二进制位数。相比于穷举法的时间复杂度 O(n),性能更加优秀。

示例

下面是 C 代码中求解两个数的最大公约数的示例:

#include <stdio.h>

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

int main() {
    int a, b, result;
    printf("Enter two numbers: ");
    scanf("%d %d", &a, &b);
    result = gcd(a, b);
    printf("GCD of %d and %d is %d\n", a, b, result);
    return 0;
}

输入:

Enter two numbers: 12 18

输出:

GCD of 12 and 18 is 6