重新认识莫比乌斯函数
默认大家已经会反演。
考虑一道题目:
求 \(\sum_{i=1}^n \mu^2(i)\),其中 \(n \leq 10^{14}\).
没办法操作,考虑感性理解。
求的是 \(1-n\) 中无平方因子数的个数。对于每个素数 \(p1\),因删去 \(\lfloor \frac{n}{p1^2} \rfloor\) 个其平方的倍数。
然后这样也会多做。比如形如 \(p1^2p2^2\) 的数就被重复删了,于是我们要把这些数加回来。有点像容斥原理?
真正容斥。
对于分解质因数后有一个指数 \(>1\) 的数可以忽略,其对答案无贡献。可分解为形如 \(\prod \limits_{i=1}^p p_i\) 形式的,设为 \(d\),则所有形如 \(d^2k\) 的数的个数会对答案造成影响,也就是 \(\lfloor \frac{n}{d^2} \rfloor\). 但是是加还是减?我们要看 \(p\) 的奇偶性。也就是其贡献为 \((-1)^p \lfloor \frac{n}{d^2} \rfloor\),具体 \(p=1,2\) 的情况上面也有描述。
\((-1)^p = \mu (d)\),这才是我们最大的发现!
于是:
\[\sum_{i=1}^n \mu^2(i) = \sum_{d=1}^{\sqrt{n}} \mu(d) \lfloor \frac{n}{d^2} \rfloor
\]
感性理解完毕(估计理性理解不了这东西吧?)
于是我们可以知道,\(\mu\) 可以看做对整除关系的容斥。
至此就可以用 \(\mathcal{O}(\sqrt{n})\) 的时间复杂度解决问题。
简易的代码胜过复杂的说教。