问题描述
给定一组正整数,计算这些数的最小公倍数(Least Common Multiple, LCM)。
输入
输入包含若干组测试数据。每组数据的第一行是一个正整数n (1 ≤ n ≤ 100),表示接下来有n个正整数需要处理。这n个正整数在下一行给出,每个数都在1到10000之间。
输出
对于每组测试数据,输出其最小公倍数。每个结果单独占一行。题目保证所有测试数据的最小公倍数不会超过32位整数的最大值。
样例输入
2 4 6
3 2 5 7
样例输出
12
70
下面是一个使用C++实现的解决方案:
#include
#include
using namespace std;
typedef long long ll;
// 计算最大公约数(GCD)
ll gcd(ll a, ll b) {
return b == 0 ? a : gcd(b, a % b);
}
// 主函数
int main() {
int n;
while (cin >> n) {
ll lcm = 1;
for (int i = 0; i ll num;
cin >> num;
lcm = lcm / gcd(lcm, num) * num; // 更新LCM
}
cout < }
return 0;
}