莫比乌斯反演 学习笔记

莫比乌斯反演

  • 定义莫比乌斯函数\(\mu(n)\),将\(n\)唯一分解,得\(n=\prod\limits_{i=1}^k p_i^{c_i}\),则有

\[\mu(n)=\left\{\begin{aligned}(-1)^k \ \ if \ squarefree \\0 \ \ \ \ \ \ \ \ \ \ \ \ \ ohterwise\\\end{aligned}\right. \]

特殊的,\(\mu(1)=1\).

\(squarefree\) 表示对\(n\)\(\forall c_i=1\).

形象化的说,当\(n\)的质因子次数超过\(1\)时,\(\mu(n)=0\),当\(n\)的质因子个数为偶数时,\(\mu(n)=1\),为奇数时,\(\mu(n)=-1\).


性质

  1. \(\mu\)是积性函数,即\(\mu(xy)=\mu(x) \cdot \mu(y),if \ x \perp y\).

    证明:代入定义式就好了啦

  2. \(\sum\limits_{d|n} \mu(d)= [n=1]\)

    \([x]\)为布尔表达式,\(x\)为真时返回\(1\),否则返回\(0\)

    证明:若\(n>1\),不考虑为\(0\)约数,即考虑\(n'=\prod\limits_{i=1}^kp_i\)的所有因数就可以了,显然,贡献为

    \[\sum_{i=1}^k (-1)^i\binom{k}{i} \]

    利用\(\binom{m}{n}=\binom{m-1}{n}+\binom{m-1}{n-1}\)将后面拆开,发现会消掉就等于\(0\)

  3. \(\varphi(n)=\sum\limits_{d|n} \mu(d) \times \frac{n}{d}\)

    要用狄利克雷卷积进行证明,窝不会,先咕咕


反演

若有定义域均为正整数的函数为\(g(x),f(x)\)满足\(g(x)=\sum\limits_{d|n}f(d)\),则$$f(n)=\sum_{d|n}\mu(d)g(\frac{n}{d})$$

证明:

\[\sum_{d|n} \mu(d)g(\frac{n}{d}) \]

\[=\sum_{d|n}\mu(d)\sum_{p|\frac{n}{d}}f(p) \]

\[=\sum_{d|n}f(d)\sum_{p|\frac{n}{d}}\mu(p) \]

\[=f(n) \]

交换两个求和要自己理解理解,倒数第二步用了性质\(1\).


事实上用这个公式的更多

\[\text{若}g(n)=\sum_{n|d}^{upper}f(d),\text{则}f(n)=\sum_{n|d}^{upper}\mu(\frac{d}{n})g(d) \]

证明:

\[\text{设} \ k=\frac{d}{n} \]

\[\sum_{k=1}^{upper'}\mu(k)g(nk) \]

\[=\sum_{k=1}^{upper'}\mu{(k)}\sum_{nk|p}^{upper'}f(p) \]

\[=\sum_{n|p}^{upper'}f(p)\sum_{k|{\frac{p}{n}}}^{upper'}\mu(k) \]

\[=f(n) \]

这个求和交换也理解理解


  • 简单的例子

给定\(a,b,d\),求\(\sum\limits_{i=1}^a\sum\limits_{j=1}^b[gcd(i,j)=d]\)

\[\text{设}f(d)=\sum\limits_{i=1}^a\sum\limits_{j=1}^b[gcd(i,j)=d],g(d)=\lfloor\frac{a}{d}\rfloor\lfloor\frac{b}{d}\rfloor \]

在意义上,\(f(d)\)\(gcd=d\)的二元组个数,\(g(d)\)\(gcd\)\(d\)的倍数的个数

显然有

\[g(n)=\sum_{n|d}^{min(a,b)}f(d) \]

由第二类反演

\[f(n)=\sum_{n|d}^{min(a,b)}\mu(\frac{d}{n})g(d) \]

\[=\sum_{k=1}^{min(\lfloor\frac{a}{n}\rfloor,\lfloor\frac{b}{n}\rfloor)}\mu(k)g(nk) \]

\[=\sum_{k=1}^{min(\lfloor\frac{a}{n}\rfloor,\lfloor\frac{b}{n}\rfloor)}\mu(k)\lfloor\frac{a}{kn}\rfloor\lfloor\frac{b}{kn}\rfloor \]

预处理完\(\mu\)之后,我们就可以利用整除分块把单次的复杂度降到\(O(\sqrt a + \sqrt b)\)

posted @ 2018-10-18 22:25  露迭月  阅读(111)  评论(0编辑  收藏