
枚举,预处理。
预处理前缀$gcd$与后缀$gcd$,枚举删哪一个即可。
#include <bits/stdc++.h>
using namespace std; int T,n;
long long a[];
long long L[];
long long R[]; long long gcd(long long a,long long b)
{
if(b==) return a;
return gcd(b,a%b);
} int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
} for(int i=;i<=n;i++)
{
L[i] = gcd(L[i-],a[i]);
} for(int i=n;i>=;i--)
{
R[i] = gcd(R[i+],a[i]);
} long long ans=; for(int i=;i<=n;i++)
{
ans=max(ans,gcd(L[i-],R[i+]));
} printf("%lld\n",ans); }
return ;
}