[模板]欧拉线性筛
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 }
$Fate \ is \ Fake$

浙公网安备 33010602011771号