使用一个vector存储已经计算过的素数,根据vector的长度判断当前需要求的素数是否已经计算过,若以及计算过,则直接通过数组的下标取出结果。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<vector>

using namespace std;

int primeNum(int num){
    if(num<=1)return 0;
    if(num==2)return 1;

    for(int i=2;i<=sqrt(num);i++){
        if(num%i==0){
            return 0;
        }
    }
    return 1;
}

int main(){
    vector<int>nums;
    int n,count=2;
    while(cin>>n){
        if(n>=nums.size()){
            while(n>nums.size()){
                if(primeNum(count)){
                    nums.push_back(count);
                }
                count++;
            }
        }
        cout<<nums[n-1]<<endl;
    }
    return 0;
}