「笔记」积性函数
莫比乌斯反演的前置知识
定义
如果一个数论函数\(f\)满足:当\(n\perp 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\)可以转化为研究\(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)\)定义为
其中\([\text{condition}]\)表示当\(\text{condition}\)为真时取值为\(1\),否则为\(0\)的函数。
除数函数
除数函数\(\sigma_{k}(n)\)用来表示\(n\)的因子的\(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(6)=2\),两个数是\(1,5\);\(\varphi(10)=4\),四个数分别为\(1,3,5,7\)。
由\(n\)的标准分解并结合容斥原理,我们可以得到欧拉函数的显示表达式:
其中\(p_i\)是质数,\(n=p_1^{\alpha_1}p_2^{\alpha_2}…p_s^{\alpha_s}\)是\(n\)的标准分解。
性质
对于任\(n\),\(\text{Euler}\)函数具有如下性质:
要证明这个等式,我们将\(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\)个整数,因此有
证明积性
以下是从大佬那里淘来的证明
同样的,\(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\),则
因为\(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)\)均为积性函数,则以下函数也为积性函数
部分性质的证明
来自铃悬的数学讲堂(抄这个东西也很累……)
两个积性函数的狄利克雷卷积是积性函数
考虑到上面的性质,即“若\(n\perp m\)则每个\(nm\)的约数都可以分解成一个\(n\)的约数和一个\(m\)的约数的积”,并且有另一个性质:若\(n\perp m,a\mid n,b\mid m\)则\(a\perp b\)。
于是若\(n\perp m\),我们就有
积性函数的逆是积性函数
第二个重要的结论:积性函数的逆是积性函数。
对于一个积性函数 \(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')\) ,
注意前面几步把 \(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\) 。
就酱紫吧