[模板]欧拉线性筛

 1 void Euler(){
 2     for(int i=2;i<=3000000;++i){
 3         if(!notprime[i]){nop++;prime[nop]=i;euler[i]=i-1;}
 4         for(int j=1;j<=nop&&i*prime[j]<=3000000;++j){
 5             notprime[i*prime[j]]=1;
 6             minp[i*prime[j]]=prime[j];
 7             if(i%prime[j]){
 8                 euler[i*prime[j]]=euler[i]*euler[prime[j]];
 9                 miu[i*prine[j]]=miu[i]*-1;
10                 continue;
11             }
12             euler[i*prime[j]]=euler[i]*prime[j];
13             miu[i*prime[j]]=0;
14             break;
15         }
16     }
17 }
View Code

 

posted @ 2019-07-07 07:11  DeepinC  阅读(69)  评论(0编辑  收藏  举报