Description
求n个整数的最小公倍数
Input
多组测试数据,先输入整数T表示组数 然后每行先输入1个整数n,后面输入n个整数k1 k2…kn
Output
求k1 k2 …kn的最小公倍数
Sample Input
1
3 12 18 6
Sample Output
36
参考文章:https://blog.csdn.net/weixin_43272781/article/details/86547908
#include <stdio.h>
//获得最小公倍数
int doLCM(int array[],int size){
int x,y,num=array[0],i,gcd;
//去数组的第一和第二个数,计算它们的公倍数,然后再取第三个数,
//和之前的公倍数计算它们的公倍数,直到只有一个数。
for(i=0;(i+1)<size;i++){
x=num;
y=array[i+1];
//计算公约数
gcd = getGCD(x,y);
//计算公倍数
num = x/gcd * y/gcd * gcd;
}
return num;
}
//获取最大公约数
int getGCD(int a,int b){
int temp;
if(a < b){
temp = a;
a = b;
b = temp;
}
if(a%b == 0){
return b;
}else{
return getGCD(b,a%b);
}
}
int main(void){
int n;
while(scanf("%d",&n)!=EOF){
int i,j;
for(i=0;i<n;i++){
int t;
scanf("%d",&t);
int array[t];
for(j=0;j<t;j++){
scanf("%d",&array[j]);
}
int result = doLCM(array,t);
printf("%d\n",result);
}
}
return 0;
}