本题是一道常规题,但有一点麻烦的是,要求前10000个素数,第10000个素数是104729,很容易超时
题目描述
Output the k-th prime number.
输入描述:
k≤10000
输出描述:
The k-th prime number.
示例1
输入
3
7
输出
5
17
#include <iostream>
#define Max 110001
using namespace std;
int prime[10001];
int primeSize=0;
bool mark[Max]={false};
void init(){
for(int i=2;i<Max;i++){
if(mark[i]) continue;
prime[primeSize++]=i;
if(primeSize>10000) break;
for(long long j=2*i;j<Max;j+=i)//关键点在此,如果用i*i,则会超时;此外 j要用longlong
mark[j]=true;
}
}
int main()
{
init();
int k;
while(cin>>k) cout<<prime[k-1]<<endl;
return 0;
}