poj 3048(筛素数法)
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int prime[20005]; void init(){ int i,j; memset(prime,0,sizeof prime); prime[1] = 1; for(i=2;i<=20000;i++){ if(prime[i]==0){ for(j=i;j<=20000;j+=i){ prime[j] = i; } } } } int main(){ int n,maxn,t,ans; init(); scanf("%d",&n); maxn = -1; while(n--){ scanf("%d",&t); if(prime[t]>maxn){ maxn = prime[t]; ans = t; } } printf("%d\n",ans); return 0; }

浙公网安备 33010602011771号