解析:
gcd(lcm(a1,a2),lcm(a1,a3),lcm(a1,a4),…,lcm(a1,an))
因为都有一个共同因子a1
所以 gcd1=lcm(a1,gcd(a2,a3,a4,…,an)
同理gcd2也是这样的。
最终答案是gcd(gcd1,gcd2,gcd3,…,gcdn)
所以我们只要求出一个后缀gcd即可
重要性质:gcd(lcm(a1,a2),lcm(a1,a3),lcm(a1,a4),…,lcm(a1,an))=lcm(a1,gcd(a2,a3,a4,…,an)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10;
int n;
ll a[N];
ll gcd(ll a,ll b)
{
return b ? gcd(b,a%b) : a;
}
ll lcm(ll a,ll b)
{
return a*b/gcd(a,b);
}
ll r[N];
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=n;i>=1;i--) r[i]=gcd(a[i],r[i+1]);
ll res=0;
for(int i=1;i<=n;i++)
{
res=gcd(res,lcm(a[i],r[i+1]));
}
cout<<res<<endl;
}