源码如下,在编辑器是正常的
#include <iostream>
#include <bitset>
using namespace std;
const int N = 1e8 + 10, M = 1e6 + 10;
int primes[M], cnt;
bitset<N> st;;
void get_primes_liner(int n){
for(int i = 2; i <= n; ++ i){
if(!st[i]) primes[++ cnt] = i;
for(int j = 1; j <= cnt && primes[j] <= n / i; ++ j){
st[primes[j] * i] = 1;
if(i % primes[j] == 0) break;
}
}
}
int main(){
int n, q;
scanf("%d %d", &n, &q);
get_primes_liner(n);
while(q --){
int k;
scanf("%d", &k);
printf("%d\n", primes[k]);
}
return 0;
}