筛子 maxn设成100000就可以了:
#include<iostream> #include<vector> using namespace std; const int maxn=100001; vector<int> prime; bool isprime[maxn]; int main(){ for(int i=0;i<maxn;i++)isprime[i]=true; isprime[0]=isprime[1]=false; for(int i=2;i<maxn;i++){ if(!isprime[i])continue; prime.push_back(i); for(int j=i*i;j<maxn;j+=i){ isprime[j]=false; } } int k; while(cin>>k){ cout<<prime[k-1]<<endl; } }