c++求n组公约数公倍数
时间: 2024-09-12 12:00:32 浏览: 43
C++ 实现求最大公约数和最小公倍数
5星 · 资源好评率100%
在C++中,计算一组整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)通常涉及到欧几里得算法(Euclidean Algorithm)用于找到两个数的最大公约数,然后利用公式 `LCM(a, b) = |a * b| / GCD(a, b)` 计算最小公倍数。
对于多组数的情况,你可以先编写一个函数来计算两个数的GCD,然后再递归地应用到所有数对上,最后用上述公式计算出整个集合的最小公倍数。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
// 使用辗转相除法计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 计算最小公倍数
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
// 针对多组数,计算它们的LCM
std::vector<int> computeLCM(const std::vector<int>& numbers) {
int first = numbers[0];
for (size_t i = 1; i < numbers.size(); ++i) {
first = lcm(first, numbers[i]);
}
return {first};
}
int main() {
std::vector<int> nums = {48, 18, 72}; // 举例的数字组
std::vector<int> result = computeLCM(nums);
for (const auto& num : result) {
std::cout << "最小公倍数: " << num << std::endl;
}
return 0;
}
```
在这个例子中,`computeLCM` 函数接收一个整数向量,首先找出第一个数与其他数的最小公倍数,然后再将结果与下一个数继续计算,直到处理完所有的数。
阅读全文