链接
题目描述
给定一个范围,有 q个询问,每次输出第 k 小的素数。
思路
欧拉筛
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n, a[350000005], p[35000005], num, q, k;
int main()
{
scanf("%d%d", &n, &q);
a[0] = a[1] = 1;
for(int i = 2; i <= n; ++i)
{
if(!a[i]) p[++num] = i;
for(int j = 1; j <= num && i * p[j] <= n; ++j)
{
a[p[j] * i] = 1;
if(i % p[j] == 0) break;
}
}
for(int i = 1; i <= q; ++i)
{
scanf("%d", &k);
printf("%d\n", p[k]);
}
return 0;
}