求解多个数的最大公约数(C语言)
时间: 2024-09-23 07:10:23 浏览: 40
求解多个数的最大公约数(Greatest Common Divisor,简称GCD)可以使用欧几里得算法(Euclidean Algorithm),也称为辗转相除法。这种方法基于这样的原理:两个整数a和b(假设a > b)的最大公约数等于b和两数余数a mod b的最大公约数。以下是使用C语言实现的一个简单版本:
```c
#include <stdio.h>
// 定义计算最大公约数的函数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 多个数的最大公约数函数,递归调用gcd
int gcd_multiple(int arr[], int n) {
int result = arr[0];
for (int i = 1; i < n; i++)
result = gcd(result, arr[i]);
return result;
}
int main() {
int numbers[] = {48, 18, 72}; // 要找最大公约数的一组数
int num_elements = sizeof(numbers) / sizeof(numbers[0]);
int gcd_value = gcd_multiple(numbers, num_elements);
printf("The greatest common divisor of the given numbers is: %d\n", gcd_value);
return 0;
}
```
在这个示例中,`gcd`函数用于计算两个数的最大公约数,而`gcd_multiple`函数通过循环调用`gcd`处理数组中的所有数。在`main`函数中,我们创建了一个包含三个数的数组,并找出它们的最大公约数。
阅读全文