思路
- 每输入一个数时,和现有的最小公倍数一起求目前的最小公倍数
- 输入的第一个数最小公倍数即为其本身
- 最小公倍数=(a/最大公约数)*b
- 注意不要使用a*b/最大公约数,避免溢出
代码
#include <stdio.h>
#include <iostream>
using namespace std;
int gcd(int a,int b){
if(b==0)
return a;
else
return gcd(b,a%b);
}
int main(){
int n=0;
while(scanf("%d",&n)!=EOF){
while(n--){
int m=0;
scanf("%d",&m);
int a=0,b=0;
for(int i=0;i<m;i++){
if(i==0){
scanf("%d",&a);
continue;
}
else{
scanf("%d",&b);
int gcdab=gcd(a,b);
a=a/gcdab*b;//避免溢出
continue;
}
}
printf("%d\n",a);
}
}
return 0;
}