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; }
原文:https://www.cnblogs.com/asdic/p/9473772.html