莫比乌斯函数入门

\[\mu(n)=\left\{ \begin{matrix} 1&n=1\\ 0&n 含有平方因子\\ (-1)^k&其中 k 为 n 本质不同的质因子个数 \end{matrix} \right.\]

这个答辩似乎看不懂……不如换个形式去描述一下。
\(\mu(1)=1\) 是初值,没啥好介绍的。
\(n\) 写为 \(\prod_{i=1}^k{p_i}^{c_i}\),如果 \(\max_{c_k}>1\) 那么 \(\mu(n)=0\)
否则 \(\mu(n)=(-1)^k\)
感觉讲得很清楚了 QwQ


由于莫比乌斯也是高贵的积性函数,和 \(\varphi(n)\)\(f(n)=\gcd(k,n)\)\(\operatorname{d}(n)\)\(\sigma(n)\) 这类都可以线性筛预处理:

mu[1]=1;
for(int i=2;i<N;i++){
	if(!pr[i])pt+=i,mu[i]=-1;
	for(int j:pt){
		if(i*j>=N)break;
		pr[i*j]=true;
		if(i%j==0)break(mu[i*j]=0)
		mu[i*j]=-mu[i];
	}
}

看着这个莫比乌斯就很想容斥的样子,那就给个例题?

\[\sum_{i=1}^n\mu^2(i) \]

虽然可以线性筛直接筛出来去计算,但还是太慢了,需要 \(\mathcal O(n)\) 的复杂度。
发现只需要去计算不为 \(0\) 的数量就可以了,其他 \(\pm1\) 的平方都是 \(1\)
那么就可以转化为 \([1,n]\) 不包含平方因子的数量,也就是算 \([1,n]\) 包含平方因子的数量。包含 \(2^2\) 的数量就是 \(\lfloor\frac n{2^2}\rfloor\);包含 \(3^2\) 的数量就是 \(\lfloor\frac n{3^2}\rfloor\);包含 \(4^2\) 的数量就是 \(\lfloor\frac n{4^2}\rfloor\),但是这个已经在 \(2^2\) 里算过了,没有贡献;包含 \(5^2\) 的数量就是 \(\lfloor\frac n{5^2}\rfloor\);包含 \(6^2\) 的数量就是 \(\lfloor\frac n{6^2}\rfloor\),可是在 \(2^2\)\(3^2\) 中算过了,反而要减去……;包含 \(30^2\) 的数量就是 \(\lfloor\frac n{30^2}\rfloor\) 可是容斥一下反而是要加上的。发现其实这加减的系数就是莫比乌斯函数 \(\mu\)

\[\sum_{i=1}^n\mu(i)\lfloor\frac n{i^2}\rfloor=\sum_{i=1}^{\sqrt n}\mu(i)\lfloor\frac n{i^2}\rfloor \]

这样线性筛预处理就能做到 \(\mathcal O(\sqrt n)\),据说可以变成 \(\mathcal O(\sqrt[3]n)\)


\[\sum_{d\mid n}\mu(d)=\varepsilon(n)=[n=1]=\left\{ \begin{matrix} 1&n=1\\ 0&n\ne1 \end{matrix} \right.\]

证明。把 \(n\) 写为 \(\prod_{i=1}^k{p_i}^{c_i}\),那就是这些质因子自由组合弄出的倍数也就是 \(\prod_{i=1}^k{p_i}^{c'_i},c'_i\in[0,c_i]\)
如果 \(\exists c'_i>1\),那么这个数的莫比乌斯函数必然为 \(0\) 无需考虑。那么也就是考虑每个 \(p_i\)\(0\) 个还是选 \(1\) 个了。选择 \(1\) 个的总数就是 \(C_k^1\),每个的贡献是 \(-1\),选择 \(2\) 个的总数就是 \(C_k^2\),每个的贡献是 \(1\)……,选择 \(k\) 个的总数就是 \(C_k^k\),每个的贡献是 \((-1)^k\)

\[\sum_{i=0}^k C_k^i\times(-1)^i \]

这个东西可以使用二项式定理去证明。

\[0^k=(1-1)^k=\sum_{i=0}^kC_k^i\times1^k\times(-1)^{k-i}=\sum_{i=0}^k C_k^i\times(-1)^i \]

不过当 \(n=1\) 时是例外,此时 \(\sum_{d\mid1}\mu(d)=1\)
很多时候会和 \(\gcd\) 纠缠在一起呢。

\[\sum_{d\mid\gcd(i,j)}\mu(d)=[\gcd(i,j)=1] \]


那就来个题:

\[\sum_{i=l1}^{r1}\sum_{j=l2}^{r2}[\gcd(i,j)=k] \]

通过二维前缀和的拆分就变成

\[\sum_{i=1}^{n'}\sum_{j=1}^{m'}[\gcd(i,j)=k] \]

发现必须 \(k\mid i\) 并且 \(k\mid i\) 所以只需要枚举 \(k\) 的倍数

\[\sum_{i=1}^{\lfloor\frac{n'}k\rfloor}\sum_{j=1}^{\lfloor\frac{m'}k\rfloor}[\gcd(i,j)=1]=\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=1] \]

根据莫比乌斯函数的性质可以变形

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid\gcd(i,j)}\mu(d) \]

这个 \(d\) 必须满足 \(d\mid\gcd(i,j)\) 也就是 \(d\mid i\) 并且 \(d\mid j\)。要求 \(d\le\min(n,m)\) 所以直接计算对于所有 \(d\in[1,\min(n,m)]\)

\[\sum_{d=1}^{\min(n,m)}\mu(d)\sum_{i=1}^n[d\mid i]\sum_{i=1}^n[d\mid j] \]

运用整除知识知道 \(\sum_{i=1}^n[d\mid i]\) 就是 \(\lfloor\frac nd\rfloor\)

\[\sum_{d=1}^{\min(n,m)}\mu(d)\lfloor\frac nd\rfloor\lfloor\frac md\rfloor \]

运用莫比乌斯函数前缀和与整除分块就可以 \(\mathcal O(\sqrt n)\) 的复杂度。


那就再来个题:

\[\sum_{p\in\mathbb P}\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=k]=\sum_{p\in\mathbb P}\sum_{d=1}^{\lfloor\frac{\min(n,m)}p\rfloor}\mu(d)\lfloor\frac n{pd}\rfloor\lfloor\frac m{pd}\rfloor \]

如果还是刚刚那个做法就需要 \(\mathcal O(\frac{n\sqrt n}{\ln n})\),不妨记 \(k=pd\)

\[\sum_{p\in\mathbb P}\sum_{d=1}^{\lfloor\frac{\min(n,m)}p\rfloor}\mu(d)\lfloor\frac nk\rfloor\lfloor\frac mk\rfloor \]

对于相同的 \(k\) 后半段是始终一样的,那就去提取后半段

\[\sum_{k=1}^{\min(n,m)}\lfloor\frac nk\rfloor\lfloor\frac mk\rfloor\sum_{p\mid k,p\in\mathbb P}\mu(\frac kp) \]

那么枚举每个 \(p\) 的倍数就可以算出后面那个东西。同样配合整除分块就可以 \(\mathcal O(\sqrt n)\) 解决。


莫比乌斯反演就是如果一个数论函数 \(f\) 可以拆成另一个数论函数 \(g\),即

\[f(n)=\sum_{d\mid n}g(d) \]

那么就可以

\[g(n)=\sum_{d\mid n}\mu(d)f(\frac nd)=\sum_{n\mid d}\mu(\frac dn)f(p) \]

一般来说第一个用到的多点。

posted @ 2023-02-10 21:26  蒟酱  阅读(81)  评论(0编辑  收藏  举报