题目描述
一组正整数的最小公倍数(LCM)是最小正整数,可被集合中的所有数整除。例如,5、7和15的LCM为105。
输入
输入将由多个问题实例组成。输入的第一行将包含一个整数,表示问题实例的数量。每个实例将由mn1n2n3表格的一行组成.其中m是集合中整数的个数,n1.NM是整数。所有整数都是正数,位于32位整数的范围内.
输出
对于每个问题实例,输出一行,其中包含相应的LCM。所有结果都在32位整数的范围内.
样例输入
2
2 3 5
3 4 6 12
样例输出
15
12
自定义两个函数求最大公约数与最小公倍数
欧几里得算法;辗转相除法
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){//最大公约数
if(b==0) return a;
return gcd(b,a%b);
}
int lcm(int a,int b){//最小公倍数
return a/gcd(a,b)*b;//
}
int main(){
int n,m,x;
int a[1005];
while(~scanf("%d",&n)){//读入到文本结束
while(n--){
cin>>m;
int num=1;//恢复初始值
while(m--){
cin>>x;
num=lcm(x,num);//最小公倍数比较更新到第X个
}
cout<<num<<endl;
}
}
return 0;
}