c语言数组求最大公约数和最小公倍数
时间: 2024-10-04 22:04:57 浏览: 53
C语言——利用最大公倍数求最小公约数.zip
在C语言中,计算数组中所有元素的最大公约数(Greatest Common Divisor,GCD)和最小公倍数(Least Common Multiple,LCM)通常需要两个步骤:首先找到数组中所有元素的最大公约数,然后用这个最大公约数去分别计算每个元素的最小公倍数。
1. **最大公约数(GCD)**:
- 可以使用欧几里得算法(Euclidean algorithm),也称为辗转相除法。对于两个数a和b,GCD(a, b) = GCD(b, a % b),直到余数为0,此时b就是最大公约数。
```c
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
对于数组,可以遍历一次数组计算每对连续元素的GCD,最后得到整个数组的最大公约数。
2. **最小公倍数(LCM)**:
- LCM可以通过GCD计算得出,公式是 LCM(a, b) = |a * b| / GCD(a, b)。如果数组中有n个元素,我们可以先找出GCD,然后依次将它乘到数组的第一个元素开始的所有元素上。
```c
int lcm(int a, int b) {
return abs(a * b) / gcd(a, b);
}
// 对数组求LCM
int array_lcm(int arr[], int n) {
int result = arr[0];
for (int i = 1; i < n; i++) {
result = lcm(result, arr[i]);
}
return result;
}
```
阅读全文