问题:输入k,输出第k个质数
代码:
#include <iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int MAXN=1e3;
bool isprime[MAXN];
vector<int>v;
void initial(){
isprime[0]=false;
isprime[1]=false;
for(int i=2;i<MAXN;i++){
isprime[i]=true;
}
for(int i=2;i<MAXN;i++){
if(!isprime[i]){
continue;
}
v.push_back(i);
for(int j=i*i;j<MAXN;j+=i){
isprime[j]=false;
}
}
}
int main()
{initial();
int k;
scanf("%d",&k);
printf("%d",v[k-1]);
return 0;
}
小结:质数筛选法的原理是,如果一个数是质数,那么它的倍数必定不是质数。