莫比乌斯函数及其反演学习笔记
莫比乌斯函数及其反演学习笔记
——by sunzz3183
定义
\[ \mu (x)\equiv
\begin{cases}
1&x=1
\\(-1)^k&x=p_1\cdot p_2\cdot \cdots\cdot p_k
\\0&otherwise
\end{cases} \]
求法
- 直接求
inline int mu(int x){
if(!x)return 0;
if(x==1)return 1;
int sum=0;
for(int i=2;i*i<=x;i++)
if(!(x%i))
if(!(x/i%i))return 0;
else sum++;
return sum&1?-1:1;
}
- 线性筛
int cnt,prime[M],phi[N],mu[N];
bool is_p[N];
void init(int n){
phi[1]=mu[1]=1;
for(int i=2;i<=n;i++){
if(!is_p[i])prime[++cnt]=i,phi[i]=i-1,mu[i]=-1;
for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
is_p[i*prime[j]]=1;
if(!(i%prime[j])){
phi[i*prime[j]]=phi[i]*prime[j];
mu[i*prime[j]]=0;
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-1);
mu[i*prime[j]]=-mu[i];
}
}
}
(根据性质,很简单)
反演
式子 1
\[\sum_{d \mid n} \mu(d)=[n=1]
\]
证明
-
当 \(n=1\) 时,则由于 \(\sum_{d|n} \mu(d)=\mu(1)\),成立。
-
当 \(n\ge 2\) 时:
设 \(P=p_1p_2\dots p_k\),即要证明:
\[\sum_{d|P}\mu(d)=0 \]
- 当 \(k=1\) 时:
\[\sum_{d|P}\mu(d)=\sum_{d|p_1}\mu(d)=\mu(p_1)+1=1-1=0 \]
- 现在设 \(t\ge 2\) 而当 \(k=1,\dots,t-1\) 时式子都成立,则
\[\sum_{d|P}\mu(d)=\sum_{d|p_1\dots p_{t-1}}\mu(d)+\sum_{p_t|d|P}\mu(d)=(1+\mu(p_t))\sum_{d|p_1\dots p_{t-1}}\mu(d)=0 \]故当 \(k=t\) 时式子也成立。
由数学归纳法得,式子对于任意的整数 \(k\) 都成立。
现在令 \(n=p_1^{c_1} \dots p_k^{c_k}\),由于当 \(d\) 能被质数的平方整除时 \(\mu(d)=0\) 所以:
\[\sum_{d|n}\mu(d)=\sum_{d|n}\mu(P)=0 \]
综上,原式成立。
式子 1.5
设 \(n=p_1^{c_1} \dots p_k^{c_k}\) 则:
\[\sum_{d \mid n} |\mu(d)|=2^k
\]
证明
类比上述证明,要证原式,即证(沿用上次定义的字母):
\[\sum_{d|P}|\mu(d)|=2^k
\]
- 当 \(k=1\) 时有:
\[\sum_{d|p_1}=1+|\mu(p_1)|=2^1 \]
- 现在设 \(t\ge 2\) 而当 \(k=1,\dots,t-1\) 时式子都成立,则
\[\sum_{d|P}|\mu(d)|=\sum_{d|p_1\dots p_{t-1}}|\mu(d)|+\sum_{p_t|d|P}|\mu(d)|=(1+|\mu(p_t)|)\sum_{d|p_1\dots p_{t-1}}\mu(d)=2^t \]故当 \(k=t\) 时式子也成立。
由数学归纳法得,式子对于任意的整数 \(k\) 都成立。
式子 2
\[[\operatorname{gcd}(i, j)=1]=\sum_{d \mid \gcd(i, j)} \mu(d)
\]
由式子 1 得
式子 3
\[\begin{aligned}
\\&\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m}[\gcd(i,j)=1]
\\&= \sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sum\limits_{d|gcd(i,j)} \mu (d)
\\&=\sum\limits_{i=1}^{n} \sum\limits_{d=1}^{min(i,m)} \mu (d)\left \lfloor \frac{min(i,m)}{d} \right \rfloor
\\&=\sum\limits_{d=1}^{min(n,m)} \mu (d)\left \lfloor \frac{n}{d} \right \rfloor \left \lfloor \frac{m}{d} \right \rfloor
\end{aligned}\]
式子 4
\[\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m}[\gcd(i,j)=k]
\]
我们可以转化和式子 3 一样的。
\[\begin{aligned}
\\&\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m}[\gcd(i,j)=k]
\\&=\sum\limits_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor } \sum\limits_{j=1}^{\left \lfloor \frac{m}{k} \right \rfloor }[\gcd(i,j)=1]
\\&=\sum\limits_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor } \sum\limits_{j=1}^{\left \lfloor \frac{m}{k} \right \rfloor }\sum\limits_{d|gcd(i,j)} \mu (d)
\\&=\sum\limits_{d=1}^{\left \lfloor \frac{min(n,m)}{k} \right \rfloor } \mu (d)\left \lfloor \frac{n}{d\times k} \right \rfloor \left \lfloor \frac{m}{d\times k} \right \rfloor
\end{aligned}
\]
式子 5
\[\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m}[\gcd(i,j)\leq x]
\]
转化成式子 4。
\[\begin{aligned}
\\&\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m}[\gcd(i,j)\leq x]
\\&=\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sum\limits_{k=1}^{x}[\gcd(i,j)=k]
\\&=\sum\limits_{k=1}^{x} \sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m}[\gcd(i,j)=k]
\\&=\sum\limits_{k=1}^{x} \sum\limits_{d=1}^{\left \lfloor \frac{min(n,m)}{k} \right \rfloor } \mu (d)\left \lfloor \frac{n}{d\times k} \right \rfloor \left \lfloor \frac{m}{d\times k} \right \rfloor
\end{aligned}
\]
求法总结
线性筛 \(O(n)\) 求,然后直接求的话也会是 \(O(n)\),可以使用整数分块和前缀和来使时间优化到 \(O(\sqrt{n})\)。
提高
应用
例 1
\[\phi(n)=\sum_{d\mid n}\mu(d)\frac nd
\]
证明
即证明 $ \phi=\mu *Id\to Id=I *\phi $
\[ld=\sum_{i=1}^n\sum_{j=1}^n[\gcd(i,n)=j]=\sum_{j|n}\sum_{i=1}^{\lfloor\frac nj\rfloor}[\gcd(i*j,n)=j]=\sum_{j|n}\sum_{i=1}^{\lfloor\frac nj\rfloor}[\gcd\left(i,\frac nj\right)=1]=\sum_{j|n}\phi\left(\frac nj\right)=I*\phi
\]
例 2
\(d(x)\) 为 \(x\) 的因数个数。
\[d(xy)=\sum_{i|x}\sum_{j|y}[gcd(i,j)=1]
\]
证明
证明可以考虑映射,或者感性理解,每个质因子要被保证枚举 \(p_{xi}+p_{yi}\) 次,所以要 \(gcd(i,j)=1\)。
例 3
\[\sum_{i=1}^n\sum_{j=1}^m\frac{i\cdot j}{\gcd(i,j)}
\]
\[\sum_{d=1}^nd\cdot\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}[\gcd(i,j)=1]\cdot i\cdot j
\]
\[\sum_{k=1}^n k\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)\cdot d^2\cdot\sum_{i=1}^{\lfloor\frac{n}{dk}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{dk}\rfloor}i\cdot j
\]
用 \(T\) 替换 \(dk\)。
\[\sum_{T=1}^n T\sum_{d|T}\mu(d)\cdot d\cdot\sum_{i=1}^{\lfloor\frac{n}{T}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{T}\rfloor}i\cdot j
\]
设 \(f(T)=\sum_{d|T}\mu(d)\cdot d\),这是一个积性函数,故原式子可以 \(O(\sqrt n)\)。