埃氏筛怎么改才能过
查看原帖
埃氏筛怎么改才能过
1528611
Happiness_3楼主2024/11/5 12:51
#include <bits/stdc++.h>
using namespace std;
#define ll int
const ll N = 1e8 + 10;
ll n,q,vis[N],prime[N];

void sieve() {
    for(ll i = 4 ; i <= n ; i += 2) {
        vis[i] = 1;
    }
    prime[1] = 2;
    ll k = 2;
    for(ll i = 3 ; i <= n  ; i += 2) {
        if(vis[i] == 0) {
            prime[k++] = i;
            for(ll j = i ; j <= n / i ; ++j) {
                vis[i*j] = 1;
            }
        }
    }
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin >> n >> q;
    sieve();
    while(q--) {
        ll x;
        cin >> x;
        cout << prime[x] << endl;
    }
    return 0;
}
2024/11/5 12:51
加载中...