莫比乌斯反演
先安利一下隔壁lsj大佬的博客:lsj-莫比乌斯反演-让我们从基础开始
在lsj大佬的博客里有一个比较重要的公式证明:
\(d(ij)=\displaystyle\sum_{x\mid i}\sum_{y\mid j}[gcd(x,y)=1]\)
莫比乌斯函数
\[ \mu(u)=\left\{\begin{split} &1&\ \text{若}n=1\\ &(-1)^k&\ \text{若}n\text{无平方因子数,且}n=p_1p_2\cdots p_k\\ &0&\ \text{若}n\text{有大于1的平方因数} \end{split}\right. \]
\(\mu\)函数性质:\(\displaystyle\sum _{d\mid n} \mu(d)=[n=1]\)
\(\phi\)函数性质:\(\displaystyle\sum _{d\mid n}\phi (d)=n\)
显然:
\(\displaystyle\sum _{d\mid gcd(i,j) } \mu(d)=[gcd(i,j)=1]\)
\(\displaystyle\sum _{d\mid gcd(i,j)}\phi (d)=gcd(i,j)\)
筛法
莫比乌斯函数可以用线性筛筛出
void init(){
miu[1]=1;
for(int i=2;i<=100000;i++){
if(!is[i]){pri[++tot]=i;miu[i]=-1;}
for(int j=1;j<=tot;j++){
int k=pri[j]*i;if(k>100000)break;
is[k]=1;
if(i%pri[j]==0){miu[k]=0;break;}
else miu[k]=-miu[i];
}
}
}