素数筛,一边筛一边计数就好了。
#include <iostream>
#include <string>
#include <stack>
using namespace std;
//习题6.6输出第k个质数
int main(){
int k;
while(scanf("%d",&k)!=EOF){
int n=0;
int nums[100000];
for(int i=0;i<100000;i++){
nums[i]=0;//默认为质数
}
for(int i=2;i<100000;i++){
if(nums[i]==0){
for(int j=2;i*j<100000;j++)
nums[i*j]=1;
n=n+1;
if (n==k){
cout<<i<<endl;
break;
}
}
}
}
}