输入一个数N(N <= 10^6)
输出>=N的最小的质数中的质数。
20
31
1 #include<cstdio> 2 const int maxn=1100000; 3 const int minn=10000; 4 int n,a,b; 5 int s[maxn/10],m; 6 bool v[maxn]; 7 int main(){ 8 scanf("%d",&n); 9 v[0]=v[1]=1; 10 for(int i=2;i<=n+minn;i++) 11 if(!v[i]){ 12 a=i+i;s[m++]=i; 13 while(a<=n+minn){v[a]=1;a+=i;} 14 } 15 while(s[b]<n||v[b+1]) b++; 16 printf("%d\n",s[b]); 17 return 0; 18 }
题目来源:51Nod
原文:http://www.cnblogs.com/J-william/p/6366436.html