筛法求莫比乌斯函数板子
莫比乌斯函数:1(n=1) 0 (n有相同的质因子) (-1)^s (s为n中不同质因子个数)
vector<int>prime;
int vis[maxn],mu[maxn];
void getmu(int n){
mu[1]=1;
for(int i=2;i<=n;i++){
if(!vis[i]){
prime.pb(i);
mu[i]=-1;
}
for(int j=0;j<prime.size()&&i*prime[j]<=n;j++){
vis[i*prime[j]]=1;
if(i%prime[j]==0){
mu[i*prime[j]]=0;break;//i*prime[j]有相同质因子
}
else{
mu[i*prime[j]]=-mu[i];//不同质因子数+1
}
}
}
}

浙公网安备 33010602011771号