re求助求助
查看原帖
re求助求助
335856
saddestboy楼主2024/3/18 16:20
#include<cstdio>
#include<vector>
#include<bitset>
#include<cstring>
#include<iostream>

using namespace std;

bitset<100000000> isprime;
int prime[10000000];

int gen_primes(int n){
    int cnt=0;
    for(int i=2;i<n;i++){
        if(isprime[i]==1){
            prime[cnt]=i;
            cnt++;
        }
        for(int j=0;j<cnt;j++){
            isprime[i*prime[j]]=0;
            if(i%prime[j]==0)break;
        }
    }
    return cnt;
}

int main(){
    isprime.set();
    isprime[1]=0;
    isprime[0]=0;
    memset(prime,0,sizeof(prime));
    
    int n,q;
    scanf("%d%d",&n,&q);
    
    int len = gen_primes(n);
    
    for(int i=0;i<q;i++){
        int num;
        scanf("%d",&num);

        int j;
        for(j=0;j<len;j++){
            if(prime[j]==num)break;
        }
        if(j<len){
            printf("%d ",num);
        }
    }
    return 0;
}
2024/3/18 16:20
加载中...