本题原理:lcm(a,b,c)=lcm(lcm(a,b),c);
/*
求n个数的最大公约数也适用gcd(a,b,c)=gcd(gcd(a,b),c);
还有一些其他性质可以看一下:
gcd(a,b)=gcd(a,a+b)=gcd(a,k*a+b)
gcd(a+b,b)=gcd(a+k*b,b)=gcd(a,b)
gcd(k*a,k*b)=k*gcd(a,b)
若gcd(a,b)=d则gcd(a/d,b/d)=1 即a/d与b/d互素
*/
#include <iostream>
#include <algorithm>
using namespace std;
int main ()
{
int n;
cin>>n;
long long a[n+1];
int i;
for(i=1;i<=n;i++)cin>>a[i];
long long lcm=a[1];
long long gcd;
for(i=2;i<=n;i++) //前两个数的最小公倍数作为这两个数的代表,用它和第三个数求最小公倍数
// 同理, 前n个数的最小公倍数
{ //作为前n个数的代表(前n个数的最小公倍数),用它和第n+1个数继续求最小
//公倍数
gcd=__gcd(lcm,a[i]);//原理:两个数的最小公倍数的倍数 是这两个数中任意一个数的倍数
lcm=lcm/gcd*a[i]; // 最小公倍数是两数乘积除以最大公约数,但两数相乘可能爆ll,
} //反正除以的是公约数,两数都是公约数的倍数,所以先除一个,再乘另一个数
cout<<lcm<<endl;
return 0;
}