Skip to main content

积性函数

参考资料

引入

积性函数(Multiplicative Function)是数论函数里最重要的一大类。它的核心特征是:把整数的乘法结构和函数值挂上钩——只要两个输入互素,函数值就可以相乘。

这一条性质看似简单,威力却很大。借助 算术基本定理,任何整数都是素数幂的乘积;而积性函数在互素的块上可乘,于是它在任意整数处的值,都能从「素数幂处的值」拼出来。这意味着研究一个积性函数,只需要搞清楚它在 pkp^k 上长什么样,整体就全清楚了。它让大量带 dn\sum_{d\mid n} 的求和与反演问题瞬间简化。

数论函数

定义在 正整数集 上的函数 f:Z+Cf:\mathbb{Z}^+\to\mathbb{C} 统称 数论函数(Arithmetic Function,算术函数)。它的输入是正整数,输出可以是任意(通常是整数或复数)。本节研究的都是其中结构特别好的那些。

积性函数

定义

数论函数 ff(且 ff 不恒为 00)称为 积性函数,若对所有互素的 a,ba,b 都有:

gcd(a,b)=1f(ab)=f(a)f(b)\gcd(a,b)=1\Rightarrow f(ab)=f(a)f(b)

若把条件放宽到对 所有 a,ba,b(不要求互素)都成立,则称 完全积性函数(Completely Multiplicative)。任何积性函数都满足 f(1)=1f(1)=1(取 a=b=1a=b=1 即得)。

推论

把唯一分解代入定义,积性函数 ff 的值由它在 各素数幂处的值 完全决定:

n=p1a1pkakf(n)=i=1kf(piai)n=p_1^{a_1}\cdots p_k^{a_k}\Rightarrow f(n)=\prod_{i=1}^{k}f(p_i^{a_i})

这就是上面说的「只需搞清 pkp^k」。对完全积性函数还更简单:f(pk)=f(p)kf(p^k)=f(p)^k,连素数幂都不用单独算,知道 ff 在素数上的值就够了。

常见积性函数

函数定义完全积性
欧拉函数 φ(n)\varphi(n)nn 互素且 n\le n 的正整数个数
因子个数 d(n)d(n)τ(n)\tau(n)nn 的正因子个数
因子和 σ(n)\sigma(n)nn 的所有正因子之和
莫比乌斯函数 μ(n)\mu(n)见下文
恒等函数 id(n)\operatorname{id}(n)id(n)=n\operatorname{id}(n)=n
单位函数 ε(n)\varepsilon(n)ε(1)=1\varepsilon(1)=1,否则 00
常值函数 1(n)\mathbf{1}(n)恒等于 11
tip

后三个看似平凡的函数(id\operatorname{id}ε\varepsilon1\mathbf{1})不是凑数的——它们是下面狄利克雷卷积里的「基本元件」。ε\varepsilon 是卷积的单位元(相当于乘法里的 11),1\mathbf{1} 负责「对所有因子求和」,id\operatorname{id} 负责把因子本身取出来。许多经典恒等式都是这几个零件的卷积。

欧拉函数

欧拉函数 φ(n)\varphi(n) 数的是 {1,,n}\set{1,\dots,n} 中与 nn 互素的个数。由唯一分解和积性可得:

φ(n)=i=1k(piaipiai1)=npn(11p)\varphi(n)=\prod_{i=1}^{k}\left(p_i^{a_i}-p_i^{a_i-1}\right)=n\prod_{p\mid n}\left(1-\frac{1}{p}\right)

它满足 φ(p)=p1\varphi(p)=p-1φ(pk)=pkpk1\varphi(p^k)=p^k-p^{k-1},是积性但 完全积性(例如 φ(4)=2φ(2)2=1\varphi(4)=2\ne\varphi(2)^2=1)。

例:算 φ(360)\varphi(360)。分解 360=23325360=2^3\cdot 3^2\cdot 5,用乘积公式:

φ(360)=360(112)(113)(115)=360122345=96\varphi(360)=360\left(1-\frac12\right)\left(1-\frac13\right)\left(1-\frac15\right)=360\cdot\frac12\cdot\frac23\cdot\frac45=96

也可逐素数幂相乘:φ(23)φ(32)φ(5)=(84)(93)(51)=4×6×4=96\varphi(2^3)\varphi(3^2)\varphi(5)=(8-4)(9-3)(5-1)=4\times 6\times 4=96,两法一致。所以 13601\sim 360 中与 360360 互素的数有 9696 个。

因子函数

n=p1a1pkakn=p_1^{a_1}\cdots p_k^{a_k}因子个数 d(n)d(n)因子和 σ(n)\sigma(n) 都能直接从分解读出:

d(n)=i=1k(ai+1)d(n)=\prod_{i=1}^{k}(a_i+1) σ(n)=i=1kpiai+11pi1\sigma(n)=\prod_{i=1}^{k}\frac{p_i^{a_i+1}-1}{p_i-1}

d(n)d(n) 的来历:nn 的每个因子,在素数 pip_i 上的指数可以是 0,1,,ai0,1,\dots,a_iai+1a_i+1 种选择,各素数独立,乘起来即得。σ(n)\sigma(n) 同理,把每个 pip_i 上的等比和 1+pi++piai1+p_i+\dots+p_i^{a_i} 乘起来。

例:算 n=72=2332n=72=2^3\cdot 3^2ddσ\sigma

d(72)=(3+1)(2+1)=12,σ(72)=(1+2+4+8)(1+3+9)=15×13=195d(72)=(3+1)(2+1)=12,\qquad \sigma(72)=(1+2+4+8)(1+3+9)=15\times 13=195

可把 72721212 个因子全列出来核对:1,2,3,4,6,8,9,12,18,24,36,721,2,3,4,6,8,9,12,18,24,36,72,正好 1212 个,相加得 195195。手工列因子时按「每个素数取一档指数」的笛卡儿积来枚举(22 的指数 ×\times 33 的指数),不易漏。

莫比乌斯函数

莫比乌斯函数(Möbius Function)μ(n)\mu(n) 定义为:

μ(n)={1,n=1(1)k,n=p1p2pk(素因子互不相同)0,n 含平方因子\mu(n)=\begin{cases}1,&n=1 \\ (-1)^k,&n=p_1p_2\cdots p_k\,(\text{素因子互不相同}) \\ 0,&n\text{ 含平方因子}\end{cases}

它把整数分三类:11、无平方因子数(按素因子个数定正负号)、有平方因子数(直接归零)。例如 μ(1)=1, μ(2)=1, μ(4)=0, μ(6)=1, μ(30)=1\mu(1)=1,\ \mu(2)=-1,\ \mu(4)=0,\ \mu(6)=1,\ \mu(30)=-1μ\mu 是积性函数。

核心恒等式

dnμ(d)=ε(n)={1,n=10,n>1\sum_{d\mid n}\mu(d)=\varepsilon(n)=\begin{cases}1,&n=1 \\ 0,&n>1\end{cases}

这条恒等式是整个莫比乌斯反演的心脏。它本质上是一个容斥:对 n>1n>1,把 nn 的无平方因子的因子按素因子个数分类,正负正好抵消(二项式系数交错和为 00)。它说的是「1μ=ε\mathbf{1}*\mu=\varepsilon」,即 μ\mu1\mathbf{1} 在卷积下的逆。

例:在 n=30=235n=30=2\cdot 3\cdot 5 上验证。3030 的因子按素因子个数分层:1100 个,μ=1\mu=1);2,3,52,3,511 个,μ=1\mu=-1);6,10,156,10,1522 个,μ=1\mu=1);303033 个,μ=1\mu=-1):

d30μ(d)=1132,3,5+36,10,15130=0\sum_{d\mid 30}\mu(d)=\underbrace{1}_{1}-\underbrace{3}_{2,3,5}+\underbrace{3}_{6,10,15}-\underbrace{1}_{30}=0

这串 13+311-3+3-1 正是 (11)3(1-1)^3 的二项展开——kk 个不同素因子时和为 (11)k=0(1-1)^k=0,所以 n>1n>1 时必为 00

狄利克雷卷积

两个数论函数 f,gf,g狄利克雷卷积(Dirichlet Convolution)定义为:

(fg)(n)=dnf(d)g ⁣(nd)(f*g)(n)=\sum_{d\mid n}f(d)\,g\!\left(\frac{n}{d}\right)

即对 nn 的每一种「因子配对」dnd=nd\cdot\frac nd=n 求和。它把「数论函数」从一盘散沙变成一个 有乘法的代数系统

例:直接按定义算 (1id)(12)(\mathbf{1}*\operatorname{id})(12),体会卷积是「遍历因子配对求和」。1212 的因子为 1,2,3,4,6,121,2,3,4,6,12,每项取 1(d)id(12/d)=112d\mathbf{1}(d)\cdot\operatorname{id}(12/d)=1\cdot\frac{12}{d}

(1id)(12)=d1212d=12+6+4+3+2+1=28=σ(12)(\mathbf{1}*\operatorname{id})(12)=\sum_{d\mid 12}\frac{12}{d}=12+6+4+3+2+1=28=\sigma(12)

正是 1212 的因子和,印证下面 1id=σ\mathbf{1}*\operatorname{id}=\sigma。同样地 (11)(12)=d121=6=d(12)(\mathbf{1}*\mathbf{1})(12)=\sum_{d\mid 12}1=6=d(12)121266 个因子),印证 11=d\mathbf{1}*\mathbf{1}=d

  • 交换律、结合律 都成立;
  • 单位元ε\varepsilon,即 fε=ff*\varepsilon=f
  • 保积性:两个积性函数的卷积仍是积性函数。

正因为有了结合律和单位元,「求某个函数的逆」「在等式两边同卷一个函数」这类操作才合法——莫比乌斯反演就是这么来的。

经典卷积关系

下面几条等式把上面所有函数串了起来,值得记熟:

1μ=ε\mathbf{1}*\mu=\varepsilon 1id=σ(因子求和)\mathbf{1}*\operatorname{id}=\sigma\quad(\text{因子求和}) 11=d(因子计数)\mathbf{1}*\mathbf{1}=d\quad(\text{因子计数}) φ1=id(即 dnφ(d)=n)\varphi*\mathbf{1}=\operatorname{id}\quad\Bigl(\text{即 }\sum_{d\mid n}\varphi(d)=n\Bigr)

最后一条尤其漂亮,下面单独说。

经典恒等式

dnφ(d)=n\sum_{d\mid n}\varphi(d)=n

直觉上,把 {1,2,,n}\set{1,2,\dots,n} 每个数 kn\frac kn 约分成最简分数,分母一定是 nn 的某个因子 dd;分母恰为 dd 的最简分数有 φ(d)\varphi(d) 个。按分母分类求和,总数仍是 nn,于是各 φ(d)\varphi(d) 加起来等于 nn

例:在 n=12n=12 上验证。1212 的因子 1,2,3,4,6,121,2,3,4,6,12,对应

d12φ(d)=φ(1)+φ(2)+φ(3)+φ(4)+φ(6)+φ(12)=1+1+2+2+2+4=12\sum_{d\mid 12}\varphi(d)=\varphi(1)+\varphi(2)+\varphi(3)+\varphi(4)+\varphi(6)+\varphi(12)=1+1+2+2+2+4=12

正好等于 n=12n=12。换个角度看分母分类:把 112,212,,1212\frac{1}{12},\frac{2}{12},\dots,\frac{12}{12} 全约分,分母为 1212 的最简分数(即分子与 1212 互素)有 φ(12)=4\varphi(12)=4 个,分母为 66 的有 φ(6)=2\varphi(6)=2 个……各档加起来仍是 1212 个分数。

另一条常用的是因子和与莫比乌斯的互逆形式(莫比乌斯反演的特例):

dnμ(d)σ ⁣(nd)=id(n)=n\sum_{d\mid n}\mu(d)\,\sigma\!\left(\frac nd\right)=\operatorname{id}(n)=n

莫比乌斯反演

莫比乌斯反演(Möbius Inversion):设 F(n)=dnf(d)F(n)=\sum_{d\mid n}f(d),则可以把 ff 反解出来:

f(n)=dnμ(d)F ⁣(nd)f(n)=\sum_{d\mid n}\mu(d)\,F\!\left(\frac{n}{d}\right)

用卷积语言写极其干净:F=f1f=FμF=f*\mathbf{1}\Rightarrow f=F*\mu。证明只需在两边同卷 μ\mu,再用 1μ=ε\mathbf{1}*\mu=\varepsilon 化简。

tip

莫比乌斯反演的本质是「在整除偏序的格上做容斥」。如果你知道的是「所有因子的累加 FF」,却想倒推出「单点的原值 ff」,μ\mu 就是那把把累加「拆回去」的钥匙——正号、负号、归零,正对应容斥里的加、减、不计。它在计数互素对、求 gcd\gcd 相关求和、欧拉函数求和等问题里出现得极频繁。

应用:重推欧拉函数公式

φ1=id\varphi*\mathbf{1}=\operatorname{id} 两边同卷 μ\mu,得 φ=idμ\varphi=\operatorname{id}*\mu,即:

φ(n)=dnμ(d)nd=ndnμ(d)d\varphi(n)=\sum_{d\mid n}\mu(d)\,\frac{n}{d}=n\sum_{d\mid n}\frac{\mu(d)}{d}

把右边对每个素因子展开(含平方因子的项被 μ\mu 清零),正好得到 npn(11p)n\prod_{p\mid n}\bigl(1-\frac1p\bigr),与前面的乘积公式吻合。这是「反演能重新推出已知结果」的典型例子。

例:在 n=12n=12 上把 φ=idμ\varphi=\operatorname{id}*\mu 算一遍,看含平方因子项如何被清零。1212 的因子里 μ\mu 非零的只有无平方因子的 1,2,3,61,2,3,64,124,12222^2μ=0\mu=0):

φ(12)=d12μ(d)12d=μ(1)12+μ(2)6+μ(3)4+μ(6)2=1264+2=4\varphi(12)=\sum_{d\mid 12}\mu(d)\frac{12}{d}=\mu(1)\cdot 12+\mu(2)\cdot 6+\mu(3)\cdot 4+\mu(6)\cdot 2=12-6-4+2=4

μ(1)=1,μ(2)=μ(3)=1,μ(6)=1\mu(1)=1,\mu(2)=\mu(3)=-1,\mu(6)=1。)结果 φ(12)=4\varphi(12)=4 与直接公式一致,而 d=4,12d=4,12 那两项因 μ=0\mu=0 自动消失。

例(反解未知函数):已知 g(n)=dnf(d)g(n)=\sum_{d\mid n}f(d),且测得 g(1)=1, g(2)=3, g(3)=4, g(6)=12g(1)=1,\ g(2)=3,\ g(3)=4,\ g(6)=12,反求 f(6)f(6)。直接套 f(n)=dnμ(d)g(n/d)f(n)=\sum_{d\mid n}\mu(d)\,g(n/d)

f(6)=μ(1)g(6)+μ(2)g(3)+μ(3)g(2)+μ(6)g(1)=1243+1=6f(6)=\mu(1)g(6)+\mu(2)g(3)+\mu(3)g(2)+\mu(6)g(1)=12-4-3+1=6

这正是「已知所有因子处的累加值、倒推单点原值」的标准反演操作——符号 +,,,++,-,-,+ 恰是容斥的加减。

线性筛求积性函数

利用 线性筛(欧拉筛)可在 O(N)O(N) 时间内求出一个积性函数 ff1N1\sim N 的全部取值。关键是筛法保证每个合数只被它的 最小素因子 pp 划掉一次,于是分两种情况递推:

  1. 对每个素数 pp,按 f(p)f(p) 的已知公式直接赋值。
  2. 对合数 nn(设最小素因子为 pp):
    • p(n/p)p\nmid(n/p),即 n/pn/ppp 互素:用积性 f(n)=f(p)f(n/p)f(n)=f(p)\cdot f(n/p)
    • 否则 p2np^2\mid n:用 ffpkp^k 上的递推式(如 φ(pk)=pφ(pk1)\varphi(p^k)=p\cdot\varphi(p^{k-1}))。

这一技巧在算法竞赛的数论题里几乎是标配,常与莫比乌斯反演配合,把整除求和问题压到线性甚至更优。

例:跟着线性筛求 φ(1)φ(12)\varphi(1)\sim\varphi(12),看三种赋值分支如何触发。φ(1)=1\varphi(1)=1。逐个处理:

  • φ(2)=1,φ(3)=2,φ(5)=4,φ(7)=6,φ(11)=10\varphi(2)=1,\varphi(3)=2,\varphi(5)=4,\varphi(7)=6,\varphi(11)=10:素数,φ(p)=p1\varphi(p)=p-1
  • φ(4)\varphi(4)4=2×24=2\times 2,最小素因子 p=2p=2p(4/2)=2p\mid(4/2)=2,落到 p2np^2\mid n 分支,φ(4)=pφ(2)=2×1=2\varphi(4)=p\cdot\varphi(2)=2\times 1=2
  • φ(6)\varphi(6)6=2×36=2\times 3p=2p=2p(6/2)=3p\nmid(6/2)=3(互素),用积性 φ(6)=φ(2)φ(3)=1×2=2\varphi(6)=\varphi(2)\varphi(3)=1\times 2=2
  • φ(8)\varphi(8)8=2×48=2\times 4p=24p=2\mid 4φ(8)=2×φ(4)=2×2=4\varphi(8)=2\times\varphi(4)=2\times 2=4
  • φ(9)\varphi(9)9=3×39=3\times 3p=33p=3\mid 3φ(9)=3×φ(3)=3×2=6\varphi(9)=3\times\varphi(3)=3\times 2=6
  • φ(10)\varphi(10)10=2×510=2\times 5p=25p=2\nmid 5φ(10)=φ(2)φ(5)=1×4=4\varphi(10)=\varphi(2)\varphi(5)=1\times 4=4
  • φ(12)\varphi(12)12=2×612=2\times 6p=26p=2\mid 6φ(12)=2×φ(6)=2×2=4\varphi(12)=2\times\varphi(6)=2\times 2=4

关键在于「p(n/p)p\mid(n/p) 与否」决定走 素数幂递推 还是 积性拆分——前者乘的是 pp,后者乘的是 φ(p)=p1\varphi(p)=p-1。差一个 11,必须分清。

完全数与梅森素数

因子和 σ\sigma 引出一个古老话题。若一个正整数恰好等于它 所有真因子之和,即 σ(n)=2n\sigma(n)=2n,称为 完全数(Perfect Number)。最小的几个是 6=1+2+36=1+2+328=1+2+4+7+1428=1+2+4+7+14

偶完全数有一条优美刻画(欧几里得—欧拉定理):nn 是偶完全数当且仅当

n=2p1(2p1),其中 2p1 是素数n=2^{p-1}\bigl(2^p-1\bigr),\quad\text{其中 }2^p-1\text{ 是素数}

形如 2p12^p-1 的素数称为 梅森素数(Mersenne Prime),pp 本身必为素数。于是「找偶完全数」与「找梅森素数」是同一个问题。梅森素数极其稀少,目前已知的只有几十个,最大素数纪录长期由它保持。至于 是否存在奇完全数,至今仍是未解之谜。

例:用欧几里得—欧拉公式造出前几个完全数。逐个试素数 pp,看 2p12^p-1 是否为素数:

pp2p12^p-1是否素数完全数 2p1(2p1)2^{p-1}(2^p-1)
22332×3=62\times 3=6
33774×7=284\times 7=28
55313116×31=49616\times 31=496
7712712764×127=812864\times 127=8128
11112047=23×892047=23\times 89✗(非素数)

注意 p=11p=11 虽是素数,2111=20472^{11}-1=2047 却是合数,故不产生完全数——「pp 素」是必要而非充分条件。验算 σ(28)\sigma(28)28=22728=2^2\cdot 7σ(28)=(1+2+4)(1+7)=7×8=56=2×28\sigma(28)=(1+2+4)(1+7)=7\times 8=56=2\times 28,确为完全数。