第10000个质数是104729
先预处理出1~120000内的所有质数,然后直接输出即可。
线性筛
#include <iostream>
using namespace std;
const int N = 1.2e5;
int primes[N], cnt;
bool st[N];
void get_primes(int n)
{
for(int i = 2; i <= n; i ++ )
{
if(!st[i]) primes[cnt ++ ] = i;
for(int j = 0; primes[j] <= n / i; j ++ )
{
st[primes[j] * i] = true;
if(i % primes[j] == 0) break;
}
}
}
int main()
{
int k;
get_primes(1.2e5);
while(scanf("%d", &k) != -1)
{
printf("%d\n", primes[k - 1]);
}
return 0;
}