筛子 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;
}
}


京公网安备 11010502036488号