c语言求多个数的最大公约数
时间: 2024-01-29 21:03:30 浏览: 69
要求多个数的最大公约数,可以先求其中两个数的最大公约数,然后再用这个最大公约数与下一个数求最大公约数,以此类推,直到求完所有数的最大公约数。
下面是一个用 C 语言编写的示例代码:
```c
#include <stdio.h>
// 求两个数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 求多个数的最大公约数
int gcdMultiple(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 arr[] = {12, 24, 36}; // 示例输入
int n = sizeof(arr) / sizeof(arr[0]); // 数组长度
int result = gcdMultiple(arr, n);
printf("最大公约数:%d\n", result);
return 0;
}
```
相关问题
c语言求多个数字最大公约数
可以使用辗转相除法来求多个数字的最大公约数,具体步骤如下:
1. 求出前两个数字的最大公约数(可以使用辗转相除法或其他方法);
2. 将第一步求得的最大公约数和下一个数字求最大公约数;
3. 重复上述步骤,直到所有数字的最大公约数求出。
下面是使用辗转相除法的示例代码:
```c
#include <stdio.h>
// 求两个数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 求多个数的最大公约数
int gcd_mult(int arr[], int n) {
int res = arr[0];
for (int i = 1; i < n; i++) {
res = gcd(res, arr[i]);
}
return res;
}
int main() {
int arr[] = { 12, 24, 36, 60 };
int n = sizeof(arr) / sizeof(arr[0]);
int result = gcd_mult(arr, n);
printf("最大公约数为:%d", result);
return 0;
}
```
输出结果为:
```
最大公约数为:12
```
C语言求多个数的最大公约数
以下是一个求多个数的最大公约数的C语言程序:
```c
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
int main() {
int n;
printf("请输入数字个数:");
scanf("%d", &n);
int nums[n];
printf("请输入%d个数字:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
int result = nums[0];
for (int i = 1; i < n; i++) {
result = gcd(result, nums[i]);
}
printf("这%d个数字的最大公约数是:%d\n", n, result);
return 0;
}
```
程序中,我们首先定义了一个函数`gcd`来求两个数的最大公约数,这个函数是使用辗转相除法来实现的。
然后在`main`函数中,我们先读取输入的数字个数和数字,然后遍历所有数字,每次都用`gcd`函数来求当前数字和前面所有数字的最大公约数,最终得到这些数字的最大公约数。
注意,程序中假设输入的数字都是正整数。如果需要处理负数或0,需要进行额外的判断和处理。
阅读全文