1 solutions

  • 1
    @ 2024-7-17 17:57:08

    埃氏筛

    #include<bits/stdc++.h>
    using namespace std;
    vector<int>p;
    bool ip[100000005];
    void EP(int n){
    	ip[0]=ip[1]=false;
    	for(int i=2;i<=n;i++)ip[i]=true;
    	for(int i=2;i<=n;i++){
    		if(ip[i]){
    			p.push_back(i);
    			if((long long)i*i>n){
    				continue;
    			}
    			for(int j=i*i;j<=n;j+=i){
    				ip[j]=false;
    			}
    		}
    	}
    }
    int n,q;
    int main(){
    	scanf("%d%d",&n,&q);
    	EP(n);
    	while(q--){
    		int k;
    		scanf("%d",&k);
    		printf("%d\n",p[k-1]);
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    1124
    Time
    2000ms
    Memory
    512MiB
    Difficulty
    8
    Tags
    # Submissions
    55
    Accepted
    7
    Uploaded By