题目描述
Output the k-th prime number.
输入
k≤10000
输出
The k-th prime number.
样例输入
10 50
样例输出
29 229
今天做到上面这个题,发现确实还是比较坑爹的。一开始只单纯在0-10000范围内搜索所有的素数,发现根本装不下10000个素数,只好不断扩大搜索范围,这才顺利求解。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool mark[300005];
long long prime[300005];
int find_prime()
{
long long i,j;
int cnt=1;
for(i=2;i<=300000;i++)
{
mark[i]=false;
}
for(i=2;i<=300000;i++)
{
if(mark[i]==true) continue;
prime[cnt++]=i;
for(j=i*i;j<=300000;j+=i)
{
mark[j]=true;
}
}
}
int main()
{
int N;
find_prime();
while(scanf("%d",&N)!=EOF)
{
printf("%d\n",prime[N]);
}
return 0;
}