题意:求一个数的最大素数因子
<pre name="code" class="html">#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const int maxn=221009;
int a[maxn];
int b[maxn];
int t,n;
//离线表示素数
// for (int i = 2; i <= sqrt; i++)
// {
// for (int j = i; j * i <= n; j++)
// {
// array[j * i] = false;
// }
// }
int main()
{
memset(a,0,sizeof(a));
a[0]=0;
a[1]=1;
for(int i=2;i<20010;i++)//求一个数的最大素数因子
{
if(!a[i])
{a[i]=i;
for(int j=i+i;j<20008;j+=i)
{
a[j]=i;//将它的倍数都标记为该数;
}
}
}
while(scanf("%d",&n)!=EOF)
{
int Max=0;
for(int i=0;i<n;i++)
{
scanf("%d",&t);
if(a[t]>a[Max])
{Max=t;
}
// printf("%d\n",a[t]);
}
printf("%d\n",Max);
}
return 0;
}