📅  最后修改于: 2023-12-03 15:02:54.881000             🧑  作者: Mango
C
编程语言中的最大公约数在 C
编程语言中,求解两个数的最大公约数是常见的问题。最大公约数指的是两个或多个整数共有的约数中最大的数,用于数学、科学等领域。
求解两个数的最大公约数,可以使用如下方法:
穷举法:从较小的数开始,不断递减,判断是否能同时被两个数整除。直到找到两个数的最大公约数为止。
辗转相除法(欧几里得算法):对两个数进行连续的除法操作,直到两数余数为0时,前一个余数即为最大公约数。
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
更相减损术:对两个数进行连续相减操作,直到两数相等时,即为最大公约数。
在实际应用中,常用辗转相除法进行求解。
辗转相除法的 C
代码如下:
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
其中,a
和 b
分别为待求最大公约数的两个数。
辗转相除法的时间复杂度为 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