莫比乌斯函数及其反演学习笔记

莫比乌斯函数及其反演学习笔记

——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} \]

求法

  1. 直接求
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;
}
  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

例题 [POI2007]ZAP-Queries

\[\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

[SDOI2015] 约数个数和

\(d(x)\)\(x\) 的因数个数。

\[d(xy)=\sum_{i|x}\sum_{j|y}[gcd(i,j)=1] \]

证明

证明可以考虑映射,或者感性理解,每个质因子要被保证枚举 \(p_{xi}+p_{yi}\) 次,所以要 \(gcd(i,j)=1\)

例 3

[国家集训队] Crash的数字表格

\[\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)\)

posted @ 2023-03-07 21:53  sunzz3183  阅读(20)  评论(0编辑  收藏  举报
Live2D