c++ 已知一个数组的最大公约数,求数组的最小公倍数
时间: 2024-10-29 15:11:01 浏览: 18
c++ 求N个数的最大公约数和最小公倍数
在C++中,已知数组的最大公约数(GCD,Greatest Common Divisor),可以用来计算数组的最小公倍数(LCM,Least Common Multiple)。因为两个数的乘积等于它们的最大公约数与最小公倍数的乘积,即:
\[ a \times b = GCD(a, b) \times LCM(a, b) \]
所以对于整个数组 \( arr \),假设数组长度为 \( n \),我们可以按照以下步骤求解最小公倍数:
1. 初始化最小公倍数为数组的第一个元素 \( arr[0] \)。
2. 使用循环遍历数组从第二个元素开始,每次将当前的最小公倍数与当前元素相乘,然后除以它们之前的最大公约数,更新最小公倍数。这是因为如果 \( lcm \) 和当前元素 \( arr[i] \) 的最大公约数已经计算出来了,那么新的 \( lcm \) 就是原来 \( lcm \) 乘以 \( arr[i] \),再去除掉原来的最大公约数。
以下是伪代码形式:
```cpp
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int findLCM(int arr[], int n) {
int lcm = arr[0];
for (int i = 1; i < n; i++) {
lcm *= arr[i] / gcd(lcm, arr[i]);
}
return lcm;
}
```
阅读全文