积性函数(Multiplicative Function)是数论函数里最重要的一大类。它的核心特征是:把整数的乘法结构和函数值挂上钩——只要两个输入互素,函数值就可以相乘。
这一条性质看似简单,威力却很大。借助 算术基本定理,任何整数都是素数幂的乘积;而积性函数在互素的块上可乘,于是它在任意整数处的值,都能从「素数幂处的值」拼出来。这意味着研究一个积性函数,只需要搞清楚它在 pk 上长什么样,整体就全清楚了。它让大量带 ∑d∣n 的求和与反演问题瞬间简化。
定义在 正整数集 上的函数 f:Z+→C 统称 数论函数(Arithmetic Function,算术函数)。它的输入是正整数,输出可以是任意(通常是整数或复数)。本节研究的都是其中结构特别好的那些。
数论函数 f(且 f 不恒为 0)称为 积性函数,若对所有互素的 a,b 都有:
gcd(a,b)=1⇒f(ab)=f(a)f(b)
若把条件放宽到对 所有 a,b(不要求互素)都成立,则称 完全积性函数(Completely Multiplicative)。任何积性函数都满足 f(1)=1(取 a=b=1 即得)。
把唯一分解代入定义,积性函数 f 的值由它在 各素数幂处的值 完全决定:
n=p1a1⋯pkak⇒f(n)=i=1∏kf(piai)
这就是上面说的「只需搞清 pk」。对完全积性函数还更简单:f(pk)=f(p)k,连素数幂都不用单独算,知道 f 在素数上的值就够了。
| 函数 | 定义 | 完全积性 |
|---|
| 欧拉函数 φ(n) | 与 n 互素且 ≤n 的正整数个数 | ✗ |
| 因子个数 d(n) 或 τ(n) | n 的正因子个数 | ✗ |
| 因子和 σ(n) | n 的所有正因子之和 | ✗ |
| 莫比乌斯函数 μ(n) | 见下文 | ✗ |
| 恒等函数 id(n) | id(n)=n | ✓ |
| 单位函数 ε(n) | ε(1)=1,否则 0 | ✓ |
| 常值函数 1(n) | 恒等于 1 | ✓ |
后三个看似平凡的函数(id、ε、1)不是凑数的——它们是下面狄利克雷卷积里的「基本元件」。ε 是卷积的单位元(相当于乘法里的 1),1 负责「对所有因子求和」,id 负责把因子本身取出来。许多经典恒等式都是这几个零件的卷积。
欧拉函数 φ(n) 数的是 {1,…,n} 中与 n 互素的个数。由唯一分解和积性可得:
φ(n)=i=1∏k(piai−piai−1)=np∣n∏(1−p1)
它满足 φ(p)=p−1、φ(pk)=pk−pk−1,是积性但 非 完全积性(例如 φ(4)=2=φ(2)2=1)。
例:算 φ(360)。分解 360=23⋅32⋅5,用乘积公式:
φ(360)=360(1−21)(1−31)(1−51)=360⋅21⋅32⋅54=96
也可逐素数幂相乘:φ(23)φ(32)φ(5)=(8−4)(9−3)(5−1)=4×6×4=96,两法一致。所以 1∼360 中与 360 互素的数有 96 个。
设 n=p1a1⋯pkak。因子个数 d(n) 与 因子和 σ(n) 都能直接从分解读出:
d(n)=i=1∏k(ai+1)
σ(n)=i=1∏kpi−1piai+1−1
d(n) 的来历:n 的每个因子,在素数 pi 上的指数可以是 0,1,…,ai 共 ai+1 种选择,各素数独立,乘起来即得。σ(n) 同理,把每个 pi 上的等比和 1+pi+⋯+piai 乘起来。
例:算 n=72=23⋅32 的 d 与 σ。
d(72)=(3+1)(2+1)=12,σ(72)=(1+2+4+8)(1+3+9)=15×13=195
可把 72 的 12 个因子全列出来核对:1,2,3,4,6,8,9,12,18,24,36,72,正好 12 个,相加得 195。手工列因子时按「每个素数取一档指数」的笛卡儿积来枚举(2 的指数 × 3 的指数),不易漏。
莫比乌斯函数(Möbius Function)μ(n) 定义为:
μ(n)=⎩⎨⎧1,(−1)k,0,n=1n=p1p2⋯pk(素因子互不相同)n 含平方因子
它把整数分三类:1、无平方因子数(按素因子个数定正负号)、有平方因子数(直接归零)。例如 μ(1)=1, μ(2)=−1, μ(4)=0, μ(6)=1, μ(30)=−1。μ 是积性函数。
d∣n∑μ(d)=ε(n)={1,0,n=1n>1
这条恒等式是整个莫比乌斯反演的心脏。它本质上是一个容斥:对 n>1,把 n 的无平方因子的因子按素因子个数分类,正负正好抵消(二项式系数交错和为 0)。它说的是「1∗μ=ε」,即 μ 是 1 在卷积下的逆。
例:在 n=30=2⋅3⋅5 上验证。30 的因子按素因子个数分层:1(0 个,μ=1);2,3,5(1 个,μ=−1);6,10,15(2 个,μ=1);30(3 个,μ=−1):
d∣30∑μ(d)=11−2,3,53+6,10,153−301=0
这串 1−3+3−1 正是 (1−1)3 的二项展开——k 个不同素因子时和为 (1−1)k=0,所以 n>1 时必为 0。
两个数论函数 f,g 的 狄利克雷卷积(Dirichlet Convolution)定义为:
(f∗g)(n)=d∣n∑f(d)g(dn)
即对 n 的每一种「因子配对」d⋅dn=n 求和。它把「数论函数」从一盘散沙变成一个 有乘法的代数系统:
例:直接按定义算 (1∗id)(12),体会卷积是「遍历因子配对求和」。12 的因子为 1,2,3,4,6,12,每项取 1(d)⋅id(12/d)=1⋅d12:
(1∗id)(12)=d∣12∑d12=12+6+4+3+2+1=28=σ(12)
正是 12 的因子和,印证下面 1∗id=σ。同样地 (1∗1)(12)=∑d∣121=6=d(12)(12 有 6 个因子),印证 1∗1=d。
- 交换律、结合律 都成立;
- 单位元 是 ε,即 f∗ε=f;
- 保积性:两个积性函数的卷积仍是积性函数。
正因为有了结合律和单位元,「求某个函数的逆」「在等式两边同卷一个函数」这类操作才合法——莫比乌斯反演就是这么来的。
下面几条等式把上面所有函数串了起来,值得记熟:
1∗μ=ε
1∗id=σ(因子求和)
1∗1=d(因子计数)
φ∗1=id(即 d∣n∑φ(d)=n)
最后一条尤其漂亮,下面单独说。
d∣n∑φ(d)=n
直觉上,把 {1,2,…,n} 每个数 nk 约分成最简分数,分母一定是 n 的某个因子 d;分母恰为 d 的最简分数有 φ(d) 个。按分母分类求和,总数仍是 n,于是各 φ(d) 加起来等于 n。
例:在 n=12 上验证。12 的因子 1,2,3,4,6,12,对应
d∣12∑φ(d)=φ(1)+φ(2)+φ(3)+φ(4)+φ(6)+φ(12)=1+1+2+2+2+4=12
正好等于 n=12。换个角度看分母分类:把 121,122,…,1212 全约分,分母为 12 的最简分数(即分子与 12 互素)有 φ(12)=4 个,分母为 6 的有 φ(6)=2 个……各档加起来仍是 12 个分数。
另一条常用的是因子和与莫比乌斯的互逆形式(莫比乌斯反演的特例):
d∣n∑μ(d)σ(dn)=id(n)=n
莫比乌斯反演(Möbius Inversion):设 F(n)=∑d∣nf(d),则可以把 f 反解出来:
f(n)=d∣n∑μ(d)F(dn)
用卷积语言写极其干净:F=f∗1⇒f=F∗μ。证明只需在两边同卷 μ,再用 1∗μ=ε 化简。
莫比乌斯反演的本质是「在整除偏序的格上做容斥」。如果你知道的是「所有因子的累加 F」,却想倒推出「单点的原值 f」,μ 就是那把把累加「拆回去」的钥匙——正号、负号、归零,正对应容斥里的加、减、不计。它在计数互素对、求 gcd 相关求和、欧拉函数求和等问题里出现得极频繁。
由 φ∗1=id 两边同卷 μ,得 φ=id∗μ,即:
φ(n)=d∣n∑μ(d)dn=nd∣n∑dμ(d)
把右边对每个素因子展开(含平方因子的项被 μ 清零),正好得到 n∏p∣n(1−p1),与前面的乘积公式吻合。这是「反演能重新推出已知结果」的典型例子。
例:在 n=12 上把 φ=id∗μ 算一遍,看含平方因子项如何被清零。12 的因子里 μ 非零的只有无平方因子的 1,2,3,6(4,12 含 22,μ=0):
φ(12)=d∣12∑μ(d)d12=μ(1)⋅12+μ(2)⋅6+μ(3)⋅4+μ(6)⋅2=12−6−4+2=4
(μ(1)=1,μ(2)=μ(3)=−1,μ(6)=1。)结果 φ(12)=4 与直接公式一致,而 d=4,12 那两项因 μ=0 自动消失。
例(反解未知函数):已知 g(n)=∑d∣nf(d),且测得 g(1)=1, g(2)=3, g(3)=4, g(6)=12,反求 f(6)。直接套 f(n)=∑d∣nμ(d)g(n/d):
f(6)=μ(1)g(6)+μ(2)g(3)+μ(3)g(2)+μ(6)g(1)=12−4−3+1=6
这正是「已知所有因子处的累加值、倒推单点原值」的标准反演操作——符号 +,−,−,+ 恰是容斥的加减。
利用 线性筛(欧拉筛)可在 O(N) 时间内求出一个积性函数 f 在 1∼N 的全部取值。关键是筛法保证每个合数只被它的 最小素因子 p 划掉一次,于是分两种情况递推:
- 对每个素数 p,按 f(p) 的已知公式直接赋值。
- 对合数 n(设最小素因子为 p):
- 若 p∤(n/p),即 n/p 与 p 互素:用积性 f(n)=f(p)⋅f(n/p)。
- 否则 p2∣n:用 f 在 pk 上的递推式(如 φ(pk)=p⋅φ(pk−1))。
这一技巧在算法竞赛的数论题里几乎是标配,常与莫比乌斯反演配合,把整除求和问题压到线性甚至更优。
例:跟着线性筛求 φ(1)∼φ(12),看三种赋值分支如何触发。φ(1)=1。逐个处理:
- φ(2)=1,φ(3)=2,φ(5)=4,φ(7)=6,φ(11)=10:素数,φ(p)=p−1。
- φ(4):4=2×2,最小素因子 p=2 且 p∣(4/2)=2,落到 p2∣n 分支,φ(4)=p⋅φ(2)=2×1=2。
- φ(6):6=2×3,p=2 但 p∤(6/2)=3(互素),用积性 φ(6)=φ(2)φ(3)=1×2=2。
- φ(8):8=2×4,p=2∣4,φ(8)=2×φ(4)=2×2=4。
- φ(9):9=3×3,p=3∣3,φ(9)=3×φ(3)=3×2=6。
- φ(10):10=2×5,p=2∤5,φ(10)=φ(2)φ(5)=1×4=4。
- φ(12):12=2×6,p=2∣6,φ(12)=2×φ(6)=2×2=4。
关键在于「p∣(n/p) 与否」决定走 素数幂递推 还是 积性拆分——前者乘的是 p,后者乘的是 φ(p)=p−1。差一个 1,必须分清。
因子和 σ 引出一个古老话题。若一个正整数恰好等于它 所有真因子之和,即 σ(n)=2n,称为 完全数(Perfect Number)。最小的几个是 6=1+2+3、28=1+2+4+7+14。
偶完全数有一条优美刻画(欧几里得—欧拉定理):n 是偶完全数当且仅当
n=2p−1(2p−1),其中 2p−1 是素数
形如 2p−1 的素数称为 梅森素数(Mersenne Prime),p 本身必为素数。于是「找偶完全数」与「找梅森素数」是同一个问题。梅森素数极其稀少,目前已知的只有几十个,最大素数纪录长期由它保持。至于 是否存在奇完全数,至今仍是未解之谜。
例:用欧几里得—欧拉公式造出前几个完全数。逐个试素数 p,看 2p−1 是否为素数:
| p | 2p−1 | 是否素数 | 完全数 2p−1(2p−1) |
|---|
| 2 | 3 | ✓ | 2×3=6 |
| 3 | 7 | ✓ | 4×7=28 |
| 5 | 31 | ✓ | 16×31=496 |
| 7 | 127 | ✓ | 64×127=8128 |
| 11 | 2047=23×89 | ✗(非素数) | — |
注意 p=11 虽是素数,211−1=2047 却是合数,故不产生完全数——「p 素」是必要而非充分条件。验算 σ(28):28=22⋅7,σ(28)=(1+2+4)(1+7)=7×8=56=2×28,确为完全数。