把1当成素数! 排在表里面AC
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int MAX=15000;
bool isprime[MAX];
int prime[MAX],num_prime;
void getprime()
{
memset(isprime,1,sizeof(isprime));
prime[0]=1;
num_prime=1;
for(int i=2;i<MAX;i++)
{
if(isprime[i]==1)
{
prime[num_prime++]=i;
for(int j=i*i;j<MAX;j+=i)
isprime[j]=0;
}
}
}
int prime_factor[10000],num_fac;
void getfactor(int data)
{
prime_factor[0]=1;
num_fac=1;
memset(prime_factor,0,sizeof(prime_factor));
for(int i=1;prime[i]*prime[i]<=data&&i<num_prime;i++)
{
if(data%prime[i]==0)
{
prime_factor[num_fac]=prime[i];
data/=prime[i];
while(data%prime[i]==0)
{
data/=prime[i];
}
num_fac++;
}
}
if(data>1)
{
prime_factor[num_fac]=data;
num_fac++;
}
}
int main()
{
getprime();
int n;
while(scanf("%d",&n)!=EOF)
{
int data,maxprime=-1,ans=0;
while(n--)
{
scanf("%d",&data);
getfactor(data);
// cout<<prime_factor[num_fac-1][0]<<endl;
if(maxprime<prime_factor[num_fac-1])
{
maxprime=prime_factor[num_fac-1];
ans=data;
}
}
printf("%d\n",ans);
}
return 0;
}