使用一个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;
}