素数筛,一边筛一边计数就好了。

#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;
                }
            }
        }
    }
}