Forever Young

「笔记」积性函数

莫比乌斯反演的前置知识

定义

如果一个数论函数\(f\)满足:当\(n\perp m\)时,有

\[f(nm) =f(n)f(m) \]

则称其为积性函数

当不需要满足互质条件\((n\perp m)\)就能满足\(f(nm) = f(n)f(m)\)时,称其为完全积性函数

\(f\)是积性函数,且\(n=p_1^{\alpha_1}p_2^{\alpha_2}…p_s^{\alpha_s}\)\(n\)的标准分解,则有

\[f(n)=f(p_1^{\alpha_1})f(p_2^{\alpha_2})…f(p_s^{\alpha_s}) \]

因此研究积性函数\(f\)可以转化为研究\(f(p^{\alpha})\),即\(f\)在素数和素数的幂上的取值。

积性函数求值

\(f\)是积性函数,为求\(f(n)\),可以对\(n\)分解素因子,然后计算所有的\(f(p^{\alpha})\)乘起来,因此积性函数求值都可以用线性筛来求

如果要对\(1\)\(n\)之间的所有数求出\(f\),注意到\(\text{Euler}\)筛法的过程中可以求出每个数的最小素因子和最小素因子的幂次,利用此就能在线性时间内计算出所需的\(f\)的值

欧拉筛如何求出最小素因子的幂次
void sieve() {
    ip[0] = ip[1] = 1;
    alpha[1] = 0;
    for (int i = 2; i < XR; i++) {
        if (!ip[i]) p[c++] = i, alpha[i] = 1, p1[i] = i;
        for (int j = 0; j < c && i * p[j] < XR; j++) {
            ip[i * p[j]] = 1;
            p1[i * p[j]] = p[j];
            if (i % p[j]) alpha[i * p[j]] = 1;
            else {
                alpha[i * p[j]] = alpha[i] + 1;
                break;
            }
        }
        //最小素因子:p1[i] ^ alpha[i]
    }
}

常见积性函数

单位函数

单位函数\(\epsilon(n)\)定义为

\[\epsilon(n)=[n=1]=\left\{ \begin{aligned} 1, & n=1 \\ 0, & n\neq 1 \end{aligned} \right.\]

其中\([\text{condition}]\)表示当\(\text{condition}\)为真时取值为\(1\),否则为\(0\)的函数。

除数函数

除数函数\(\sigma_{k}(n)\)用来表示\(n\)的因子的\(k\)次方之和:

\[\sigma_{k}(n)=\sum_{d|n}d^{k} \]

约数个数\(\sigma_{0}(n)\)常记为\(d(n)\),约数和\(\sigma_{1}(n)\)常记为\(\sigma(n)\)

可以证明除数函数都是积性函数。

证明

每个素因子对函数的贡献都是独立的,它们之间的贡献可以用乘积来衡量,举一个例子:要算\(n\)的约数个数(即\(d(n)\)),就要枚举\(n\)的约数\(d\),考虑\(n\)的标准分解,也就是\(n=p_1^{\alpha_1}p_2^{\alpha_2}…p_s^{\alpha_s}\),可以想象出\(d\)的素因子也跑不出这些个素因子,只不过上面的指数不一样,假设是\(\small\beta\),那么也就是\(d=p_1^{\beta_1}p_2^{\beta_2}…p_s^{\beta_s}\)\(\beta_1\)显然是要在\(0\)\(\alpha_1\)之间,否则\(d\)就不是\(n\)的约数了,同理每个\(\beta\)都是对应的每个\(0\)\(\alpha\)之间的,那么\(\beta_1\)\(0\)\(\alpha_1\)\(\alpha_1+1\)种取值,每个\(\beta\)的选取是独立的,所以他们的贡献的乘积就是\((1+\alpha_1)*(1+\alpha_2)*…*(1+\alpha_s)\),这就是\(\sigma_0\)的算法,其他的\(\sigma_k\)是一样的,只不过\((1 + \alpha)\)这一步要换成一个求和的形式。

素因子贡献独立是一个常见的思路。

Euler函数(欧拉函数)

\(\text{Euler}\)函数\(\varphi(n)\)表示不超过\(n\)且与\(n\)互质的正整数的个数,即

\[\varphi(n)=\sum\limits_{i=1}^{n}[\gcd(i,n)=1] \]

比如说\(\varphi(6)=2\),两个数是\(1,5\)\(\varphi(10)=4\),四个数分别为\(1,3,5,7\)

\(n\)的标准分解并结合容斥原理,我们可以得到欧拉函数的显示表达式:

\[\varphi(n)=n·\prod_{i=1}^{s}(1-\frac{1}{p_i}) \]

其中\(p_i\)是质数,\(n=p_1^{\alpha_1}p_2^{\alpha_2}…p_s^{\alpha_s}\)\(n\)的标准分解。

性质

对于任\(n\)\(\text{Euler}\)函数具有如下性质:

\[n=\sum_{d|n}\varphi(d) \]

要证明这个等式,我们将\(1\)\(n\)中的所有整数按与\(n\)的最大公约数分类。

\(gcd(n,i)=d\),那么\(gcd(\frac{n}{d},\frac{i}{d})=1\)。而又\(\frac{i}{d}\)是不超过\(\frac{n}{d}\)的整数,故这样的\(i\)\(\varphi(\frac{n}{d})\)个。

考虑所有\(d|n\),我们就考虑到了所有\(1\)\(n\)之间的\(n\)个整数,因此有

\[n=\sum_{d|n}\varphi(\frac{n}{d})=\sum_{d|n}\varphi(d) \]

证明积性

以下是从大佬那里淘来的证明

同样的,\(t\perp nm\Leftrightarrow t\perp n,t\perp m\Leftrightarrow(t\bmod n)\perp n,(t\bmod m)\perp m\),所以每个 \([1, nm]\)之间的与\(nm\)互质的数\(t\)都可以对应到一个\([1,n]\)的与\(n\)互质的数 \(t\bmod n\)和一个\([1,m]\)的与\(m\)互质的数\(t\bmod m\)

并且根据中国剩余定理,这种对应是一一对应的(即已知 \(a\perp n, b\perp m\)后可以唯一确定一个\([1,nm]\)之间的\(t\)使得\(t\bmod n=a, t\bmod m=b\),且\(t\perp nm\))。因此 \(\varphi(nm)=\varphi(n)\varphi(m)\)


然而我看不懂……还是从定义上来证明吧!

假设有两个互质的正整数\(n,m\),则

\[\varphi(n)=n\prod(1-\frac{1}{p_i}) \]

\[\varphi(m)=m\prod(1-\frac{1}{p_{i'}}) \]

\[\varphi(n)\varphi(m)=n\prod(1-\frac1{p_i})m\prod(1-\frac1{p_{i'}})=nm\prod(1-\frac1{p_i})\prod(1-\frac1{p_{i'}}) \]

因为\(n,m\)互质,所以\(p_i\)\(p_{i'}\)各各都不相同,且都是\(nm\)的质因子

因此就可以推出\(\varphi(nm)=\varphi(n)\varphi(m)\)

至此,积性函数的性质得证。但是由上面的证明可知,\(n,m\)必须要互质才可以满足欧拉函数是积性函数,由此可见欧拉函数不是完全积性函数

恒等函数

\(\mathbf{id}^k=n^k\),\(\mathbf{id}(n)=n\)

(就酱紫一笔带过吧……)

性质

\(\mathbf{f}(x)\)\(g(x)\)均为积性函数,则以下函数也为积性函数

\[\begin{aligned} h(x)&=f(x^p)\\ h(x)&=f^p(x)\\ h(x)&=f(x)g(x)\\ h(x)&=\sum_{d\mid x}f(d)g(\frac{x}{d}) \end{aligned} \]

部分性质的证明

来自铃悬的数学讲堂(抄这个东西也很累……)

两个积性函数的狄利克雷卷积是积性函数

考虑到上面的性质,即“若\(n\perp m\)则每个\(nm\)的约数都可以分解成一个\(n\)的约数和一个\(m\)的约数的积”,并且有另一个性质:若\(n\perp m,a\mid n,b\mid m\)\(a\perp b\)

于是若\(n\perp m\),我们就有

\[\begin{aligned}t(nm)&=\sum_{d\mid nm}f(d)g\left(\frac{nm}d\right)\\&=\sum_{a\mid n,b\mid m}f(ab)g\left(\frac{nm}{ab}\right)\\&=\sum_{a\mid n,b\mid m}f(a)f(b)g\left(\frac na\right)g\left(\frac mb\right)\\&=\left(\sum_{a\mid n}f(a)g\left(\frac na\right)\right)\left(\sum_{b\mid m}f(b)g\left(\frac mb\right)\right)\\&=t(n)t(m)\end{aligned} \]

积性函数的逆是积性函数

第二个重要的结论:积性函数的逆是积性函数
对于一个积性函数 \(f\) ,如何证明其逆 \(g(n)=[n=1]-\sum_{i\mid n,i\neq1}f(i)g\left(\frac ni\right)\) (注意,积性函数一定满足 \(f(1)=1\) ,因为 \(f(1)=f(1)f(1)\) ,并且如果 \(f(1)=0\)\(f(n)\equiv0\) ,这种情况我们不考虑)也满足积性呢?
\(nm\) 的大小进行归纳:

\(nm=1\) 时, \(g(1)=1\) ,结论显然成立;

假设 \(nm > 1\) ,当 \(n'm'< nm\) 的时候有 \(g(n'm')=g(n')g(m')\)

\[\begin{aligned}g(nm)&=-\sum_{d\mid nm,d\neq1}f(d)g\left(\frac{nm}d\right)\\&=-\sum_{a\mid n,b\mid m,ab\neq1}f(ab)g\left(\frac{nm}{ab}\right)\\&=-\sum_{a\mid n,b\mid m,ab\neq1}f(a)f(b)g\left(\frac na\right)g\left(\frac mb\right)\\&=f(1)f(1)g(n)g(m)-\sum_{a\mid n,b\mid m}f(a)f(b)g\left(\frac na\right)g\left(\frac mb\right)\\&=g(n)g(m)-\left(\sum_{a\mid n}f(a)g\left(\frac na\right)\right)\left(\sum_{b\mid m}f(b)g\left(\frac mb\right)\right)\\&=g(n)g(m)-\epsilon(n)\epsilon(m)\\&=g(n)g(m)\end{aligned} \]

注意前面几步把 \(g(\frac{nm}{ab})\) 拆成 \(g(n/a)g(m/b)\) 的时候 \(\frac{nm}{ab}<nm\) ,可以运用归纳条件。
最后一步是因为 \(nm>1\) 所以 \(n,m\) 之间至少一个不为 \(1\) ,则 \(\epsilon(n)\epsilon(m)=[n=1][m=1]=0\)

就酱紫吧

posted @ 2020-04-27 10:17  Loceaner  阅读(1129)  评论(0编辑  收藏  举报