线性筛

E氏筛,欧拉筛(线性筛)今天就把欧拉筛的东西留在这里,但是洛谷很奇怪非要把答案总结起来才不会T,真是莫名其妙

void Euler_prime(int n){
    v[0]=1;
    v[1]=1;
    for(int i=2;i<=n;i++){
        if(!v[i])
           prime[++cnt]=i;
        for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
            v[i*prime[j]]=1;
            if(!i%prime[j]) break; 
        }
    }
}
#include<bits/stdc++.h>
using namespace std;
const int N=10000005;
const int M=100050;
int v[N],prime[N],cnt,n,m;
string res[M];
void Euler_prime(int n){
    v[0]=1;
    v[1]=1;
    for(int i=2;i<=n;i++){
        if(!v[i])
           prime[++cnt]=i;
        for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
            v[i*prime[j]]=1;
            if(!i%prime[j]) break; 
        }
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin>>n>>m;
    Euler_prime(n);
    for(int i=1;i<=m;i++){
        int k;cin>>k;
        res[i]=v[k]==0?"Yes":"No";}
    for(int i=1;i<=m;i++)
      cout<<res[i]<<"\n";
    return 0;
} 
posted @ 2018-08-14 11:56  ASDIC减除  阅读(129)  评论(0编辑  收藏  举报