//暴力求解复杂度为O(n(n-1)/2)
//假设所有输入中最大值为maxp,枚举i=maxp to 1(从大到小枚举),
//如果i是某两个数的约数,则i是所有数的最大最大公约数。
//复杂度 ??
#include<stdio.h>
#include<string.h>
#define maxn 1000005
int num[maxn];
int main()
{
int n,i,j,k;
int maxp=1;
scanf("%d",&n) ;
memset(num,0,sizeof(num));
for(i=1;i<=n;i++)
{
scanf("%d",&k);
num[k]++;
if(k>maxp) maxp = k;
}
for(i=maxp;i>=1;i--)
{
k=0;
for(j=i;j<=maxp;j+=i)
{
if(num[j]) k+=num[j];
if(k>1)
{
printf("%d\n",i);
return 0;
}
}
}
return 0;
}
sgu499
最新推荐文章于 2018-04-14 16:52:38 发布