欧拉函数性质:
线性筛的同时也可以构造出欧拉函数和莫比乌斯函数
for(int i=2;i<=100000;i++){
if(!vis[i]){
pri[++cnt]=i;
e[i]=i-1; //对任意一个质数n,和它互质的数当然有n-1个(性质1)
mo[i]=-1; //一个质数因式分解后只有自己,故为(-1)^1
}
for(int j=1;j<=cnt,pri[j]*i<=100000;j++){
vis[i*pri[j]]=1;
if(i%pri[j]==0){
e[i*pri[j]]=e[i]*pri[j]; // 根据性质5的递推式得出,即性质4
mo[i*pri[j]]=0; // 说明i*pri[j]有相同的质因子pri[j]
break;
}
else{
e[i*pri[j]]=e[i]*e[pri[j]]; //i和pri[j]互质,利用欧拉函数的积性(性质3)
mo[i*pri[j]]=-mo[i]; //i*pri[j]得到一个新的质因子pri[j]
}
}
}