求多个数的最小公倍数:求出前两个数的最小公倍数,然后用这个最小公倍数和第三个数求最小公倍数,迭代下去.
lcm(a,b)=a*b/gcd(a,b),先除再乘,否则会溢出
#include <iostream>
#include <cstdio>
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 t;
scanf("%d",&t);
while (t--)
{
int m,a,b;
scanf("%d",&m);
scanf("%d",&a);
m--;
while (m--)
{
scanf("%d",&b);
a=lcm(a,b);
}
printf("%d\n",a);
}
return 0;
}