莫比乌斯函数的线性筛
void getmu(int x){
vis[1]=1;
mu[1]=1;
for(int i=2;i<=x;i++){
if(!vis[i]){
prime[++cnt]=i,mu[i]=-1;
}
for(int j=1;j<=cnt&&i*prime[j]<=x;j++){
vis[i*prime[j]]=1;
if(i%prime[j] is 0){
mu[i*prime[j]]=0;break;
}
else mu[i*prime[j]]=-mu[i];
}
}
}
重要公式: