题意:
输入一个正整数n(1 <=n<= 5000),然后输入n个正整数(1<=这些数<=20000),要你求这n个数里哪个数的最大素因数(即能被该数整除的最大素数)最大,然后输出这个数。若有两个数的最大素因数相同,则输出前面那个。
代码:
#include<stdio.h>
#define maxn 20005
int prime[maxn]={0,1};
int t;
int main()
{
int i,j;
for(i=2;i<maxn;i++)
{
if(!prime[i])
{
for(j=i;j<maxn;j=j+i)
prime[j]=i;
}
}
while(~scanf("%d",&t))
{
int max=0,ans;
for(i=1;i<=t;i++)
{
int x;
scanf("%d",&x);
if(max<prime[x])
{
max=prime[x];
ans=x;
}
}
printf("%d\n",ans);
}
}