hdu 2710 (基础)
素数!!
#include"stdio.h" #include"string.h" #include"math.h" int prime[20001]; int ans[20010]; void fun() { memset(prime,-1,sizeof(prime)); int i,j,k; prime[0]=0; for(i=2;i<=20000;i++) { if(prime[i]) { for(j=2*i;j<=20000;j+=i) prime[j]=0; } } ans[1]=1; for(i=2;i<=20000;i++) { k=(int)sqrt((double)i); for(j=1;j<=k;j++) { if(i%j==0) { if(prime[i])ans[i]=i; if(prime[i/j])ans[i]=i/j; } } } } int main() { int n; int a; fun(); while(scanf("%d",&n)!=-1) { int max,k; max=-1; while(n--) { scanf("%d",&a); if(ans[a]>max) {max=ans[a];k=a;} } printf("%d\n",k); } return 0; }