全书按「章」前进,一章 50 页。每章的节奏是:第 1 页导引(这个问题在人类文明里是怎么长出来的,本章路线),随后 18 页讲义(定义、定理与方法一条一条立起来,含历史注与现代接口旁注),12 页例题(带完整解答与逐步演算),12 页习题(由浅入深,末页复盘归档),2 页格物札记——一章一思:一页回到《九章算术》的对照传统,一页接通现代数学;末 6 页为综合站(章小结 · 思想卡 · 挑战一 · 挑战二 · 实验 · 章测试与评讲)。
本册三条线索,贯穿每一章:
① 明线——盈不足与逼近。从《九章算术》盈不足术、刘徽割圆注起手,把「以已知的离散,逼近未知的连续」这门古老手艺,一步步提升为极限、连续、导数与积分的语言。凡标〔盈不足〕处,都是这条线索的接续点。
② 现代接口——微积分的现代形态。每章札记与综合站把本章内容与现代数学对齐:实数完备性的等价命题群、可微性的现代表达(方向导数与 Fréchet 导数)、最优化与凸分析、拓扑连续、计算机代数与数值分析。理论在这里长出今天的枝叶。
③ 离散 ⇄ 连续接口——两个世界的握手。盈不足术是线性插值、开方术是不动点迭代、差分是导数的离散影子、梯形法是积分的离散影子。凡标〔离散〕处,都把连续命题翻译成可计算的离散版本,再翻译回来。
写法约定(TEX 标准):分数写成上下两层的 12;极限的展示型写法是 limn→∞;微分号 d 与常数 π, e 用正体,变量用斜体 x, y, f;积分号 ∫;集合与数系符号 ∈ ⊂ ∪ ∩ ∅,ℕ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ;向量用粗斜体 a;等价 ≅、蕴含 ⟹、当且仅当 ⟺、任意 ∀、存在 ∃。中括号写成 [ ]。凡方法步骤,一律配图,一步一图。
公元四五世纪,一位不知名的算学家在《孙子算经》卷下写下了数学史上最著名的问题之一:
《孙子算经》卷下 · 物不知数〔大衍〕
今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?
答曰:二十三。
有一堆东西数目不明:三个三个地数余 2,五个五个地数余 3,七个七个地数余 2。问这堆东西有多少个?答案:23。
用今天的记号,这道题是求一个数 x,使得 x ≡ 2 (mod 3)、x ≡ 3 (mod 5)、x ≡ 2 (mod 7) 同时成立。答案不止 23——233、443、653……都满足;但 23 是最小的一个,通解是 x = 23 + 105t(105 = 3·5·7)。宋人程大位《算法统宗》把解法编成一首口诀:
口诀的账本:2×70 + 3×21 + 2×15 = 233,再减去 105 的两倍,得 23。三个魔法数 70、21、15 各有来历:70 是 5 和 7 的倍数,且除以 3 余 1;21 是 3 和 7 的倍数且除以 5 余 1;15 是 3 和 5 的倍数且除以 7 余 1。把「除以 3 余 2」的那份用 70 去凑,其余两项同法相加——每个条件各出一位代表,互不干扰。
这道题是本册的开篇之题。「余数」在小学里是除法的下脚料,在这里却成了主角:三三数之、五五数之、七七数之——同一个数在不同「模子」下留下不同的影子,数论的全部故事,就是研究这些影子之间的法则。〔大衍〕将作为章内接续点:从《孙子》到秦九韶「大衍求一术」,再到高斯的同余理论,一条暗线贯穿全书。
数论是研究整数——尤其是正整数——性质的数学分支。它的原料朴素到极致:1, 2, 3, 4, 5, …;但它的定理深刻得惊人。一条判据:一个问题若用整数陈述、却需要非整数的工具才能解决,它多半就是数论问题。
数论的名题清单(跨越两千年的接力)
① 素数有多少?——Euclid 约在公元前 300 年证明:无穷多。(第一章)
② 孪生素数猜想——相差 2 的素数对有无穷多吗?(如 11 与 13)至今未决;张益唐 2013 年证明相差不超过 7000 万的素数对有无穷多,此后界被众人推进到 246。
③ 哥德巴赫猜想——大于 2 的偶数都能写成两个素数之和吗?1742 年提出,至今未决;陈景润 1966 年证明「1+2」。
④ Fermat 大定理——xn + yn = zn 在 n ≥ 3 时无正整数解。1637 年 Fermat 写在页边上,1995 年 Wiles 用椭圆曲线与模形式证明。
⑤ 本册的主问题——二次互反律:两个素数「互为平方剩余」的法则。高斯称之为「宝石」。(第五章)
与清单上的未决难题不同,互反律是一个已被完全证明、且证明美到可以被反复重讲的定理。选择它作为目标,正因为它同时展示了数论的两副面孔:具体(每个素数对都能逐字验算)与抽象(定律本身说的是全体素数的对称性)。
本册处理内容的方式是现代的:凡是能用群论语言说清的,绝不用零散技巧重说一遍。这不是炫技,而是经济——同余的世界天生就是群的温床,用群的眼光看,Wilson 定理、Fermat 小定理、原根存在性会共享同一副骨架。
匈牙利数学家 Erdős 常说:上帝有一本书,里面存着每个定理「最好的」证明。他不信上帝,但他信《The Book》。听到一个漂亮的证明,他会喊:「This one's from The Book!」
本册对主要定理的立场是 TheBook 式的:Fermat 小定理给项链计数证明,Wilson 定理给配对证明,二次互反律给计数与Zolotarev 置换符号两条证明——每一条都让定理显得「不得不真」。
组合数学是另一件现代武器:把代数恒等式翻译成数东西。下面的例子是 Fermat 小定理的项链证明预告——它将在第二章完整登场。
这样的证明不依赖任何记忆,只依赖「换个方式数同一批东西」——双计数。组合证明与群论证明在本册常常殊途同归:项链的「转动不变性」正是循环群作用的写照。
全书五章,是一条环环相扣的行军路线:每一章都为下一章锻造一件兵器。
两全其美的读法:顺着读,兵器一件不缺;带着问题读——每一章开头都会重申主问题「什么时候 x2 ≡ a (mod p) 有解」,可以看到答案如何一层层收网。
本册的数学,是一条东方与西方交替领跑的接力赛道。把八件大事钉在同一根时间轴上,全书的历史坐标便一目了然。
三个细节值得驻足。其一,《九章算术》方田章的约分术(「以少减多,更相减损,求其等也」)正是辗转相减求 gcd——第一章将把它与 Euclid 算法并排讲。其二,秦九韶 1247 年的「大衍求一术」已把物不知数问题推广到任意模数,比 Euler 与 Gauss 的一般理论早了五百多年。其三,高斯的《算术研究》(Disquisitiones Arithmeticae) 完成于他 19 岁到 24 岁之间——「同余」这个核心概念连同记号 ≡,都是这本书的发明。
1976 年以前,数论被公认为「最纯粹」的数学——Harder 称「它没有用」甚至是一种荣耀。1976 年 Diffie 与 Hellman 发表《密码学的新方向》,1977 年 Rivest、Shamir、Adleman 提出 RSA:两千年纯数学一夜之间接管了世界的秘密。
两个公钥系统的数论内核(本册将完整建立)
① RSA=中国剩余定理 + 欧拉定理。取大素数 p, q,公开 n = pq 与加密指数 e;保密 d,使 ed ≡ 1 (mod φ(n))。解密之所以唯一、之所以可行,全是第二章的定理在说话。试跑一遍真实数字:p = 61, q = 53, n = 3233, φ(n) = 3120, e = 17, d = 2753,验证 17 × 2753 ≡ 1 (mod 3120) ✓。
② Diffie–Hellman=原根 + 离散对数难题(第四章)。两人公开交换 ga, gb,各自算出 gab;偷听者知道 g、ga、gb,却难以反推 a、b——「乘起来容易,拆开很难」正是第四章的题眼。
本册不回避这些现代应用,但也不喧宾夺主:密码学是数论定理的消费者,不是本书的目的。每一处「现代接口」小节都会指明:是哪一条定理、哪一个群在承担安全。
数论是最适合「动手算」的数学分支:定理说的就是可数的东西。本册每一章的「实验」综合站都配一个小程序,而正文中所有例题数值均由程序预先对账。先立一个样板——三行代码验算物不知数:
ans = [x for x in range(105) if x%3==2 and x%5==3 and x%7==2] print(ans) # [23] ——《孙子算经》的答案,两千年后一行对账 print(2*70 + 3*21 + 2*15 - 2*105) # 23 ——「三人同行七十稀」的口诀账
再看本册多处要用的两件「账房工具」:快速幂与欧拉判据。快速幂把 an mod p 的计算量从 n−1 次乘法压到约 log2n 次——指数 100 只需 7 步:
def mpow(a, n, p): # 快速幂:an mod p
r, a = 1, a % p
while n:
if n & 1: r = r*a % p
a = a*a % p; n >>= 1
return r
print(mpow(2, 100, 13)) # 3 (第二章例10 逐字对账)
print(mpow(5, 5, 11)) # 1 —— 5 是 mod 11 的平方剩余(第五章欧拉判据)计算在本书里有三重身份:对账(定理的数字验证)、发现(先算出 QR 表,再猜出 (2/p) 的补律——这正是历史上 Euler 与 Gauss 的路)、反例(一个反例胜过十次苦算)。三重身份在第五章的「互反律对账器」实验里合流。
记号先行,全书统一。下列符号将在首次出场处详细定义,此处先立清单备查:
全书记号总表
| 记号 | 含义 | 首次出场 |
|---|---|---|
| a | b | a 整除 b(b 是 a 的倍数) | 1.2 |
| a ≡ b (mod n) | n | (a − b),a 与 b 模 n 同余 | 2.2 |
| gcd(a,b) · lcm(a,b) | 最大公因数 · 最小公倍数 | 1.6 / 1.10 |
| (ℤ/nℤ)× | 模 n 的可逆剩余类乘法群 | 2.5 |
| ord(a) 或 |a| | 群元素 a 的阶 | 4.2 |
| φ(n) | Euler 函数:不超过 n 且与 n 互素的正整数个数 | 2.14 |
| ind_g(a) | 以 g 为底的指标(离散对数) | 4.10 |
| (a/p) | 勒让德符号(a 是否 mod p 的平方剩余) | 5.5 |
体例节奏:每章 50 页,按「讲义 ×18 → 例题 ×12 → 习题 ×12 → 格物札记 ×2 → 综合站 ×6」行进。讲义一步一图、一图一义;例题全部数值对账;习题课配提示;格物札记一谈中国古典、一谈现代发展;综合站含小结、思想卡、两道挑战(TheBook 式证明)、一个实验与章测试。
两条明线:〔大衍〕标记——从《孙子》物不知数到秦九韶大衍求一术再到 CRT 的算法线;〔少广〕标记——从《九章》少广开方术到模 p 开平方再到互反律的平方线。读到带标记的段落,就是在与古人同行。
最后是姿势建议:数论的定理不读完证明不算读。每个「定理」当作一座必须亲手走过的桥——本册的证明都按 TheBook 标准挑过,走一遍即是享受。
小学的除法算式 385 ÷ 24,我们早在三年级就会写:商 16 余 1。但同一道算式有两种读法:商 16 说的是「装满 16 轮」——这是除法的数量职能;余 1 说的是「轮转之后还剩一格」——这是除法的结构职能。数论关心的,是后者。
看一只钟。17 时过后 9 小时是几时?26 时,但钟面只回答「2 时」:26 与 2 在钟面上无法区分。我们把这件事记作 26 ≡ 2 (mod 24)。钟面把全体整数折叠成 24 个位置,任何数都落到其中一个位置上——折叠的规则,正是带余除法。
本书的第一句话
设 a, b 是整数,b ≠ 0。除法算式 a = qb + r(0 ≤ r < b)里,商 q 是「轮数」,余数 r 是「剩数」。数论 = 只盯着 r 的学问:r 怎么折叠(第二章)、r 怎么解方程(第三章)、r 怎么循环(第四章)、r 怎么对称(第五章)。
下一节先把「整除」这个词说严格——它是「r = 0」的特殊情形,也是全部理论的第一个原子。
定义 1.2.1(整除)
设 a, b 是整数,a ≠ 0。若存在整数 k 使 b = ak,则称 a 整除 b,记作 a | b;此时 a 是 b 的因数(因子),b 是 a 的倍数。不存在这样的 k 时记作 a ∤ b。
整除的四条基本性质,每条的证明都只有一行——但这一行行合起来,就是第一章全部 machinery 的雏形。
性质 1.2.2(整除的基本性质)
① 传递:a | b 且 b | c ⟹ a | c。 (c = bk = a(lk))
② 线性封闭:a | b 且 a | c ⟹ a | (mb + nc)(m, n 为任意整数)。 (mb+nc = a(mk1+nk2))
③ 边界:1 | b 恒真;b | 0 恒真(k = 0);a | a。
④ 夹逼:a | b 且 b | a(均非零)⟹ a = ±b。 (b = ak, a = bl ⟹ a = akl, kl = 1)
性质②是四条中最有分量的一条:若 a 同时整除 b 与 c,则 a 整除它们的一切整系数组合。把它倒过来读——对给定的 b、c,问「哪些 a 能整除 mb + nc」——就在追问最大公因数(1.6 节)。整除的结构天然是偏序的:把「整除」当作大小关系,全体因数组成一座格(lattice)。
定理 1.3.1(带余除法)
设 a 为整数,b 为正整数。则存在唯一的整数对 q, r 使
a = qb + r, 0 ≤ r < b.
证明(存在性) 在数轴上标出 b 的倍数:…, −b, 0, b, 2b, …。它们把数轴切成一段段长为 b 的区间。a 落在某一段 [qb, (q+1)b) 内——具体地,取 q 为不超过 a/b 的最大整数(良序原理保证整数分点非空且可取最大)。于是 r = a − qb 满足 0 ≤ r < b。(唯一性) 设 a = qb + r = q′b + r′,两式相减:(q − q′)b = r′ − r。左边是 b 的倍数,而右边满足 −b < r′ − r < b——长度为 b 的区间里唯一的 b 倍数是 0,故 r = r′, q = q′。∎
定理貌不惊人,其实是全书的第一台发动机:唯一性保证了「每个整数 mod b 有唯一影子」——没有它,第二章的「折叠」就叠不出良定义的钟面;存在性给出的取整手续,则是第四章「求阶」和第五章「求平方根」时反复使用的降模工具。良序原理(任何非空整数集若有下界则含最小元)是这两步的共同靠山——它是数论的「隐形公理」,1.7 节 Bézout 恒等式将再次调用它。
定义 1.4.1(素数)
大于 1 的整数 p 称为素数(质数),若它的正因数只有 1 与 p 本身;大于 1 且非素数的整数称为合数。1 既不是素数也不是合数。
为什么把 1 开除出素数籍?这不是洁癖,而是保护算术基本定理的唯一性:若 1 算素数,则 6 = 2·3 = 1·2·3 = 1·1·2·3,同一数有「无穷多种分解」——唯一性荡然无存。1 是乘法世界的「单位元」,单位元不参与原子论,这条界线将在 1.13 节讲唯一性时彻底说清。
引理 1.4.2(试除的门槛:√n)
n > 1 是合数 ⟺ n 有因数 d 满足 2 ≤ d ≤ √n。
证明 ⟸ 显然。⟹ 设 n = ab,2 ≤ a ≤ b。则 a2 ≤ ab = n,故 a ≤ √n。∎
于是判定素数只需用不超过 √n 的素数试除。例如 223:√223 < 15,只需试 2, 3, 5, 7, 11, 13——全部除不尽,223 是素数(1.12 节前的例 3 完整跑一遍)。
定理 1.5.1(Euclid,约公元前 300 年) 素数有无穷多个。
证明(TheBook 版) 反设素数只有有限个,全体列出为 p1, p2, …, p_k。令
N = p1p2⋯p_k + 1.
则 N > 1,故 N 有素因子(引理 1.4.2 之下至少是被自己整除;一般地 N 可分解)。但任取 p_i 去除 N 都余 1:N ≡ 1 (mod p_i)。于是 N 的素因子不在清单上——与「清单已完备」矛盾。∎
这个证明是「TheBook 式」的典范:不构造新素数,只证明清单永远关不上门。注意证明并没有说 p1p2⋯p_k + 1 本身是素数——它只保证这个数带来某个清单外的新素数。例如 2·3·5·7·11·13 = 30030,30031 = 59 × 509,带来两个新素数。
现代变奏(Fermat 数路线):记 F_n = 22n + 1。关键观察:若 m < n,则 F_n − 2 = F_0F_1⋯Fm+1⋯ 的连乘关系使 F_m | F_n − 2。于是 gcd(F_m, F_n) 整除 2 与两奇数之 gcd,只能为 1——Fermat 数两两互素!每个 Fermat 数贡献一批全新素数,而 Fermat 数有无穷多个,故素数无穷。这条变奏的妙处:它把「无穷多」归功于一个显式的两两互素数列——组合结构代替了反证。
定义 1.6.1(公因数与最大公因数)
设 a, b 不全为零。同时整除 a 与 b 的整数称为它们的公因数;公因数中最大者记作 gcd(a, b)(简写 (a, b))。若 gcd(a, b) = 1,称 a 与 b 互素。
直觉一:交集。gcd(120, 78) 是「120 的因数集合 ∩ 78 的因数集合」的最大元。直觉二(更现代):因子格的交——1.2 节的格视图下,gcd 是两座塔在整除偏序下的最大公共下界。
交集视图好算却不高——它依赖标准分解,而分解大数很难(这正是现代密码的安全前提)。下一节的 Bézout 恒等式给出一条不需要分解的路:用良序原理直接抓住 gcd,这正是把 gcd 从「搜索问题」变成「结构定理」的关键一步,也是群论登场前最后的铺垫。
定理 1.7.1(Bézout 恒等式)
设 a, b 不全为零,d = gcd(a, b)。则存在整数 m, n 使 ma + nb = d。且 d 是一切「ma + nb 型数」中最小的正数。
证明(TheBook 版:良序原理一步到位) 考虑集合 S = {ma + nb : m, n ∈ ℤ, ma + nb > 0}。取 m = 1, n = 0(设 a ≠ 0)知 S 非空,由良序原理,S 有最小元 d。三方核验:
① d 整除 a:带余除法 a = qd + r(0 ≤ r < d),则 r = a − qd = (1 − qm)a + (−qn)b 是 S 型数。若 r > 0 则 r < d 与最小性矛盾,故 r = 0,即 d | a。同理 d | b。
② d 是公因数:已证。
③ d 最大:设 c 是任一公因数,则 c | ma + nb = d,故 c ≤ d。
三方合璧:d 就是 gcd,且它自己就有 Bézout 表达。∎
证明的神来之笔是第①步:用带余除法在 S 内部造出「更小的正元」,逼它为零。良序原理 + 带余除法的这套连招,将贯穿全书(1.12 算术基本定理、4.7 原根存在性)。看 120 与 78 的组合世界:
组合世界「恰好是 d 的倍数」不是巧合:d 整除每个组合元(性质②),而 d 自己在 S 中——两头一夹,世界不多不少正是 d 的倍数集。这个「由生成元张成的世界」的图像,第二章将以子群的身份正式登场。
引理 1.8.1(算法的引擎) 对 b ∤ a(b ≠ 0),有 gcd(a, b) = gcd(b, a − qb),特别地 gcd(a, b) = gcd(b, r)(r 为 a mod b)。
证明 左边集合与右边集合其实是同一个:c | a 且 c | b ⟺ c | b 且 c | a − qb(性质②双向使用)。⟎
引理说:gcd 不因降模而变。于是反复降模——辗转相除,gcd(120, 78) 的全程账本:
辗转相除账本(120, 78)
| 步骤 | 算式 | 余数去向 |
|---|---|---|
| ① | 120 = 1 × 78 + 42 | gcd(120,78) = gcd(78,42) |
| ② | 78 = 1 × 42 + 36 | gcd(78,42) = gcd(42,36) |
| ③ | 42 = 1 × 36 + 6 | gcd(42,36) = gcd(36,6) |
| ④ | 36 = 6 × 6 + 0 | 余 0,gcd = 6 ∎ |
余数 42 > 36 > 6 > 0 严格递减——良序原理保证有限步内落到 0;最后一个非零余数就是 gcd。回代:6 = 42 − 36 = 42 − (78 − 42) = 2×42 − 78 = 2(120−78) − 78 = 2×120 − 3×78,与 1.7 节的 Bézout 系数 (2, −3) 会师。
效率的惊人事实(Lamé, 1844):Euclid 算法最坏情形恰发生在相邻 Fibonacci 数上——gcd(Fk+1, F_k) 恰需 k − 1 步(如 gcd(34, 21) = 1 用了 7 步)。于是步数 ≤ 5 × 输入的十进制位数:一百位的数也只需约五百步。快,是因为 mod 收缩得快——这个「对数级收缩」的思想,第四章的快速幂与离散对数将再度登场。
互素不只是「公因数只有 1」的否定性陈述,它有一个响亮的肯定性等价刻画:
定理 1.9.1(互素的四个等价面孔) 对整数 a 与正整数 n,下列等价:
① gcd(a, n) = 1; ② 存在 x 使 ax ≡ 1 (mod n); ③ 存在整数 m 使 ma ≡ 1(mod n 的 Bézout 形式); ④ a 在「mod n 的乘法世界」里有逆元。
证明 ①⟹②:Bézout 给 ma + kn = 1,取 mod n:ma ≡ 1。②⟹①:设 ax ≡ 1 (mod n),则 ax − 1 = kn,任何公因数 c | a, n 必整除 ax − kn = 1,故 c = 1。②⟺③⟺④ 是转写。∎
面孔②是全书最常用的一条:互素 = 可逆。在 mod n 的世界里,「除以 a」不是除法,而是乘以 a 的逆元——这正是 1.2 节性质②「消去律」在模世界成立与否的分水岭。看 mod 5 的乘法世界(全体非零剩余 1, 2, 3, 4):
这张图是第四章「原根」的第一眼雏形:乘法世界 (ℤ/5)× 有 4 个元素,从 2 出发幂游 2 → 4 → 3 → 1 走遍全群——2 是生成元。群论的语言将在第二章和第四章分两步把这件事说透;眼下:互素性是「可逆」的同义词,这是 Bézout 恒等式最漂亮的化身。
定义 1.10.1(最小公倍数) 同为 a、b 倍数的正整数中最小者,记作 lcm(a, b)。
引理 1.10.2(互素消去律——Euclid 引理的特例) 若 c ⊥ a 且 c | ab,则 c | b。
证明 Bézout:1 = cx + ay。两边乘 b:b = cbx + aby。c 整除右边两项(第二项由 c | ab),故 c | b。∎
定理 1.10.3(gcd·lcm 恒等式) 对正整数 a, b:gcd(a, b) · lcm(a, b) = ab。
证明 记 g = gcd(a,b),则 ab/g = a·(b/g) 是 a 的倍数,也是 b 的倍数——它是公倍数,故 L = lcm ≤ ab/g。反方向:设 L = am = bn,则 (a/g)m = (b/g)n;由 (a/g) ⊥ (b/g) 与引理 1.10.2 得 (b/g) | m,写 m = (b/g)t,代入:L = ab/g · t,而 L 是最小公倍数,t ≥ 1,故 L ≥ ab/g。两头夹逼,L = ab/g。∎
证明里引理 1.10.2 居功至伟——而它只是 Bézout 的一行推论。现代注脚:把 g 与 L 分别看作因子格 1.2 节中的「最大公共下界」与「最小公共上界」,定理 1.10.3 说的是乘法与格论的调和;到第五章,勒让德符号的乘性将再次扮演「结构随乘法携带」的角色。
定理 1.11.1(线性丢番图方程) 方程 ax + by = c(a, b ≠ 0)有整数解 ⟺ gcd(a, b) | c。有解时,设 (x0, y0) 是一特解,则全部整数解为
x = x0 + (b/g)·t, y = y0 − (a/g)·t (t ∈ ℤ), g = gcd(a, b).
证明 ⟹ 左边是 gcd 的组合元。⟸ Bézout 给 ma + nb = g,乘 c/g。通解验证:代入后两项抵消;反之两解相减得 (a/g)·Δx = −(b/g)·Δy,由 (a/g) ⊥ (b/g) 与引理 1.10.2,(b/g) | Δx,即 Δx = (b/g)t。∎
跑一遍全流程:解 37x + 21y = 63。g = gcd(37, 21) = 1 | 63 ✓。1.7 节账本回代出 37×4 − 21×7 = 1,乘 63:特解 (252, −441),通解 x = 252 + 21t, y = −441 − 37t。
图中 37x + 21y = 63 一类方程的「非负解计数」是自然的后续问题:通解沿步长 (21, −37) 跳动,正象限只接得住有限几步——这类「计数通解」的题在习题课七展开。丢番图方程是数论的祖业:《九章》盈不足、拜占庭的「百鸡问题」(百钱百鸡)都是它的变奏,第三章将把「求解」升级到模世界。
定理 1.12.1(算术基本定理 · 存在性) 每个大于 1 的整数都能写成有限个素数的乘积(允许重复)。
证明(最小反例法) 反设存在不能分解的数,由良序原理取最小者 n。n 不是素数(素数自带分解 n = n),故 n 是合数:n = ab,1 < a, b < n。但 a、b 都比「最小反例」小,由 n 的最小性,a 与 b 都能写成素数之积——拼起来就是 n 的分解,与 n 是反例矛盾。∎
这个证明展示了良序原理的第二种用法:最小反例。1.7 节的用法是「取最小正元直接当答案」,这里是「取最小反例然后撕碎它」——两句台词,同一原理。对具体的数,分解按「从最小的素因子开始剥」逐层进行:
树可以有不同的长法(先剥 11 也行),但叶子集合——重排意义下的素数串——是唯一的。这唯一性正是「基本」二字的分量,它的证明(1.13 节)比存在性微妙得多:需要一个真正深刻的引理,而那个引理的现代解读,是群论的第一声啼鸣。
引理 1.13.1(Euclid 引理) p 是素数,p | ab ⟹ p | a 或 p | b。
证明 设 p ∤ a。素数 p 的因数只有 1 与 p,而 p ∤ a,故 gcd(p, a) = 1——互素!由互素消去律(引理 1.10.2,c = p):p | ab ⟹ p | b。∎
定理 1.13.2(算术基本定理 · 唯一性) 把素数乘积按大小排好,分解方式唯一:n = p1a1 p2a2 ⋯ p_ra_r(p1 < p2 < ⋯)。
证明 设 n 有两个素数分解。两边出现的公共素数逐对消去(Euclid 引理保证:左边的 p 整除右边乘积,必与右边某个 q 相等——素数 q 只有 1 与 q 两个因数,p | q 迫使 p = q)。消到最后:若一边剩 1 而另一边剩素数 q,则 q 整除 1,矛盾。∎
群论解释:Euclid 引理里「p 不整除 a ⟹ p 与 a 互素」这一步,说的是素数在 mod a 的世界里是可逆元——「素」的本质是「在所有更小的世界里都不塌缩」。更现代的说法:唯一性是 ℤ 这个环的特惠,而非当然。在高斯整数 ℤ[i] 中,5 不是「素元」:5 = (2+i)(2−i),分裂了;但 ℤ[i] 仍是唯一分解的——(2+i) 与 (1+2i) 只差单位 i 相乘,本质同一。而在 ℤ[√−5] 中,唯一性真的破产:6 = 2 × 3 = (1+√−5)(1−√−5),两串分解无可调和——十九世纪的代数学家正是被这类现象逼出了理想论与抽象代数。
记 π(x) 为不超过 x 的素数个数。它是数论最重要的函数之一——本册只需它的几个采样点与一条「远景定律」:
采样表(程序对账)
| x | 100 | 1 000 | 10 000 | 100 000 | 1 000 000 |
|---|---|---|---|---|---|
| π(x) | 25 | 168 | 1 229 | 9 592 | 78 498 |
| x / ln x | 21.7 | 144.8 | 1 085.7 | 8 685.9 | 72 382.4 |
| 比值 | 1.15 | 1.16 | 1.13 | 1.10 | 1.08 |
素数定理(Hadamard · de la Vallée Poussin, 1896)
π(x) ∼ x / ln x, 即 limx→∞ π(x)·ln x / x = 1.
读法:x 附近的素数「密度」约为 1/ln x——十亿位数附近的素数密度约 1/20.7 ≈ 5%。证明需要复分析(ζ 函数的非平凡零点都在临界线上偏一侧),远超本册;但它的陈述人人可懂,且直接喂养第五章的互反律对账器。
从 π(x) 出发的远望,是第五章互反律对账器的底气:程序在几秒内验证上百对素数,靠的正是素数定理保证「素数管够、随手可取」。
素数虽密,间隙却会拉长:113 与 127 之间隔着 13 个合数。两个方向的自然问题——间隙能多小与间隙会多大——一个至今未决,一个已有初等答案。
孪生素数猜想(未决) 形如 (p, p+2) 的素数对有无穷多对。已知前几对:(3,5), (5,7), (11,13), (17,19), (29,31), (41,43), (59,61), (71,73), …
张益唐的突破口(2013) 相差不超过 70 000 000 的素数对有无穷多对。此后 Polym8 数学社区把界压到 246——离 2 只剩「无穷」的距离。
Bertrand 假设(已决,1845 提出证明 / 1852 Chebyshev) 对每个整数 n > 1,存在素数 p 使 n < p < 2n。→ 完整初等证明见本章挑战二(Erdős 十七岁的证明)。
一条阅读分界线:孪生素数猜想「问无穷」,Bertrand 假设「问可达」——前者悬赏两百年未决,后者初等可证。分清这两类问题,是数论基本功:本册的主问题(互反律)属于「可达」一类,而它一旦证毕,立刻给出所有素数对都满足的定律——这正是「定律」与「猜想」的气质之别。
算术基本定理一到手,因子结构立刻变成组合小算术。设 n = p1a1 p2a2 ⋯ p_ra_r,则 n 的每个正因子形如 p1b1⋯p_rb_r(0 ≤ b_i ≤ a_i)——每个指数独立选值:
定理 1.16.1(τ 与 σ 的公式)
τ(n) = ∏(a_i + 1), σ(n) = ∏ (1 + p_i + ⋯ + p_ia_i) = ∏ (p_ia_i+1 − 1)/(p_i − 1).
对账(n = 2024 = 23·11·23):τ = 4×2×2 = 16;σ = (1+2+4+8)(1+11)(1+23) = 15×12×24 = 4320——与预演算一致 ✓。注意 τ 与 σ 都是积性函数:gcd(m, n) = 1 时 τ(mn) = τ(m)τ(n)——「互素则独立」将是第二章单位群与第五章勒让德符号反复出现的关键词。
完全数 σ(n) = 2n 的 n(真因子之和恰为自身)。前四个:6 = 1+2+3,28 = 1+2+4+7+14,496,8128。
Euclid–Euler 定理(两千年的接力:Euclid 给出构造,Euler 1837 年证明无遗漏):偶完全数恰为 2p−1(2p − 1),其中 2p − 1 是素数(梅森素数)。奇完全数是否存在,至今未决——已排除到 101500 以下。
组合视角收束:τ 与 σ 的公式把「找因子」从枚举升格为指数独立选值的计数——这正是「因子格 1.2 节」的代数化身:格的每条路径对应一组指数选择。下一节走向本章的出口:当分解大数不可行时,如何不分解而判素。
试除法的账单很清楚:判定一个 n 位数需要约 10n/2/(n ln 10) 次除法——600 位数要试 10297 量级,宇宙年龄也跑不完。RSA 需要 600 位的素数,故密码学的地基是不分解的判素。第一块砖是 Fermat 小定理(第二章完整证明),先睹其用法:
Fermat 检验(预告) 若存在 a 使 an−1 ≢ 1 (mod n),则 n 必是合数(快幂:约 n 位的平方级步数)。
陷阱:存在顽固的合数——Carmichael 数——对所有互素的 a 都冒充素数。最小的是 561 = 3 × 11 × 17(对一切 gcd(a,561)=1 都有 a560 ≡ 1)。Fermat 检验骗得过它。
Miller–Rabin 的二次修正(2.17 节完整展开)
把 n − 1 写成 2s · d(d 奇)。取 a,逐平方验链:ad, (ad)2, …, (ad)2s−1。若链中从不出现 −1 的等价物、且末项不是 1,则 n 是合数。关键:mod 奇素数 p,平方后仍等于 −1 的只有「真 −1」——Carmichael 数的伪装在平方环节被撕破(561 的链在 a = 2 时断裂)。随机 100 轮检验,合数漏网率 < 4−100。
本章从一句「商是配角」出发,抵达了算术基本定理。装备清单如下:
方法表:问题 → 工具 → 定理
| 问题 | 工具 | 定理编号 |
|---|---|---|
| a = qb + r 唯一吗? | 良序原理 | 带余除法 1.3.1 |
| gcd 能否「不分解而得」? | 良序 + 组合世界 | Bézout 1.7.1 |
| gcd 算多快? | 降模收缩 | Euclid 算法 1.8(Lamé:Fibonacci 最坏) |
| 何时能消去? | Bézout 一行推论 | 互素消去律 1.10.2 |
| 分解唯一吗? | Euclid 引理 | FTA 1.12.1 + 1.13.2 |
| 因子有多少、加起来多大? | 指数独立计数 | τ, σ 公式 1.16.1 |
| 如何不分解而判素? | Fermat 检验 → MR | 预告 1.17(2.17 展开) |
例 1 证明:对任意正整数 n,6 | n(n+1)(2n+1)。
解(组合双视角) 视角一(连续性):6 = 2 × 3。连续两数之积 n(n+1) 必含偶数,故 2 | n(n+1);又任何整数 mod 3 只能是 0, 1, 2:若 n ≡ 0 则 3 | n;若 n ≡ 2 则 n+1 ≡ 0;若 n ≡ 1 则 2n+1 ≡ 3 ≡ 0 (mod 3)。三类情形穷举,3 | n(n+1)(2n+1) 恒成立。2 与 3 都整除而 gcd(2,3)=1,由互素合流(若 2|N、3|N 且互素则 6|N——引理 1.10.2 的直接推论)得 6 | n(n+1)(2n+1)。
视角二(平方和):n(n+1)(2n+1) = 6·(12 + 22 + ⋯ + n2)/n?不引入分数,改写为恒等式 12+⋯+n2 = n(n+1)(2n+1)/6——正是平方和公式;反过来,本例的整除性恰保证了该公式右端永远是整数。
方法注记:「分解模数 + 逐模穷举」是第一章的招牌动作——到第二章它会升格为「中国剩余定理」的雏形: mod 2 与 mod 3 的信息可以独立获取、自由合并。
例 2 求 −38 除以 5 的商与余数,即 −38 = 5q + r,0 ≤ r < 5。
解 在 5 的倍数栅栏 …, −40, −35, … 中找夹住 −38 的格子:−40 ≤ −38 < −35,故 q = −8,r = −38 − (−40) = 2。验证:5 × (−8) + 2 = −38 ✓,且 0 ≤ 2 < 5 ✓。
易错点 负数除法的「直觉商」常给错:若取 q = −7,则 r = −38 + 35 = −3 < 0,违反 0 ≤ r < 5——余数永远非负(本册约定),折叠必须落在正确的格子里。
推广核对 同样的手法对任何 a、b > 0:先找 b 的倍数栅栏里夹住 a 的那一格,q = 左栏杆,r = a − qb。程序语言里的「向零取整」与数学的「向 −∞ 取整」在负数上不同——写代码对账时要留意。
例 3 判定 221 与 223 是素数还是合数。
解 门槛:√221 < 15、√223 < 15,只需用素数 2, 3, 5, 7, 11, 13 试除。
221:奇;2+2+1 = 5 非 3 倍数;不以 0/5 结尾;221 = 7×31 + 4、= 11×20 + 1、= 13×17 + 0——13 | 221,故 221 = 13 × 17,合数。
223:奇;2+2+3 = 7;尾非 0/5;223 = 7×31 + 6、= 11×20 + 3、= 13×17 + 2——全部除不尽,素数。
工作量账:六个除法定生死——√n 门槛(引理 1.4.2)把 223 之外的两百多个候选一票否决。这例子小到无感,但把门槛思想记住:判定 223 位素数需试到 √223 ≈ 15 位数——1015 次除法,个人电脑数天;这正是 1.17 节「不分解判素」的动机。
例 4 求整数 m, n 使 120m + 78n = gcd(120, 78)。
解(回代法) 辗转相除(1.8 节账本):120 = 1×78 + 42;78 = 1×42 + 36;42 = 1×36 + 6;36 = 6×6。gcd = 6。倒着回代:
6 = 42 − 36
= 42 − (78 − 42) = 2×42 − 78
= 2×(120 − 78) − 78 = 2×120 − 3×78。
故 m = 2, n = −3。验证:240 − 234 = 6 ✓。
注 Bézout 系数不唯一:加 (13, −20) 后 120×15 − 78×23 = 6 也对(因为 120×13 = 78×20)。全部解的参数化在习题课三展开。
例 5 用辗转相除法求 gcd(2024, 1547),并列步骤表。
解 2024 = 1×1547 + 477;1547 = 3×477 + 116;477 = 4×116 + 13;116 = 8×13 + 12;13 = 1×12 + 1;12 = 12×1 + 0。故 gcd = 1(六步)。有趣的账:2024 = 23·11·23,1547 = 72·31……1547 的素因子账其实不必算——六步 mod 就判了互素。
复杂度直觉:每两步至少把较小数砍半(因为两次 mod 后余数必然小于原数的一半),所以步数 ≤ 2×位数级。Lamé 定理(1.8 节)更精确:最坏是相邻 Fibonacci 数。
例 6 用三种方法判定 91 与 48 互素,并写出对应的「逆元」。
解 法一(分解):91 = 7 × 13,48 = 24 × 3——素因子集合不相交,互素。
法二(Euclid 算法):91 = 1×48 + 43;48 = 1×43 + 5;43 = 8×5 + 3;5 = 1×3 + 2;3 = 1×2 + 1;2 = 2×1。gcd = 1。
法三(Bézout):由法二的 mod 链回代:1 = 3 − 2 = 3 − (5 − 3) = 2×3 − 5 = 2×(43 − 8×5) − 5 = 2×43 − 17×5 = 2×43 − 17×(48 − 43) = 19×43 − 17×48 = 19×(91 − 48) − 17×48 = 19×91 − 36×48。验证:19×91 = 1729,36×48 = 1728,差恰为 1 ✓。
逆元:由 19×91 − 36×48 = 1 取 mod 48:91 ≡ 43 ≡ −5,故 19×43 ≡ 1,即 43−1 ≡ 19 (mod 48)(同时 91−1 ≡ −36 ≡ 12 (mod 48))。
三法并评:分解直观但怕大数;Euclid 算法快;Bézout 回代顺带交出逆元——互素「= 可逆」(定理 1.9.1)的三副面孔在一次例题里轮番上场。
例 7 已知 gcd(24, 90) = 6,求 lcm(24, 90),并给出验证。
解 恒等式(定理 1.10.3):lcm = 24 × 90 / 6 = 360。验证:360 = 24×15 = 90×4 ✓ 是公倍数;再核最小性——24 = 23×3,90 = 2×32×5,逐素数取最大幂:23×32×5 = 360 ✓,两法一致。
应用(通分的最小代价):通分 1/24 与 1/90 的最小公分母正是 lcm = 360,而非 24×90 = 2160——恒等式直接告诉「最省的公共周期」。齿轮啮合、行星会合(lcm)与切割精度(gcd)是同一对对偶。
例 8 求 37x + 21y = 63 的全部整数解。
解 g = gcd(37, 21):37 = 1×21 + 16;21 = 1×16 + 5;16 = 3×5 + 1;5 = 5×1。g = 1 | 63 ✓ 有解。回代:1 = 16 − 3×5 = 16 − 3×(21 − 16) = 4×16 − 3×21 = 4×(37 − 21) − 3×21 = 4×37 − 7×21。乘 63:特解 x0 = 252, y0 = −441。通解:x = 252 + 21t, y = −441 − 37t(t ∈ ℤ)。
非负解清点:x > 0 需 t ≥ −11;y > 0 需 t ≤ −12——无交叠,正整数解不存在;t = −12 恰好给边界解 (0, 3)(y = 3, x = 0,验证 21×3 = 63 ✓)。
步长的方向感:通解每步 x 增 b = 21、y 减 a = 37——沿直线斜率 −37/21 跳格子,一步一响。
例 9 把 2024 写成标准分解。
解 逐层剥最小素因子:2024 = 2 × 1012 = 4 × 506 = 8 × 253;253 不被 2, 3, 5, 7, 11, 13 整除,试 11:253 = 11 × 23。故 2024 = 23 × 11 × 23(见 1.12 节分解树)。
顺手收账:τ(2024) = (3+1)(1+1)(1+1) = 16;σ(2024) = 15×12×24 = 4320;2024 有 16 个因子(1 到 2024 全列),在日历上是「因子大年」——2024 年因此常被用作数论趣味题。
例 10 不逐个试除,直接用标准分解计算 τ(2024) 与 σ(2024)。
解 2024 = 23·11·23。
τ 的组合读法:因子 = 每个素指数独立选 b ∈ {0,1,2,3}(4 种)、{0,1}(2 种)、{0,1}(2 种),由乘法原理 τ = 4×2×2 = 16。
σ 的几何级数:2 的贡献 1+2+4+8 = 15;11 贡献 12;23 贡献 24;σ = 15×12×24 = 4320。
对账:直接枚举 16 个因子 {1, 2, 4, 8, 11, 22, 23, 44, 46, 88, 92, 184, 253, 506, 1012, 2024},求和 = 4320 ✓,个数 = 16 ✓。
「指数独立选值」是乘法原理的教科书舞台——算术基本定理把数论题变成组合题,本章标题的双主题在此会师。
例 11 验证 496 是完全数,并写出它的 Euclid–Euler 参数。
解 496 = 24 × 31。σ = (1+2+4+8+16)(1+31) = 31 × 32 = 992?——不对,σ(24) = 31、σ(31) = 32,σ(496) = 31×32 = 992 = 2 × 496 ✓ 完全。
参数:496 = 24 × 31 = 25−1(25 − 1),对应梅森素数 25 − 1 = 31 素数 → 命中 Euclid–Euler 公式。前四位:p = 2, 3, 5, 7 → 6, 28, 496, 8128。
悬念:p = 11 时 211 − 1 = 2047 = 23 × 89 合数——梅森素数本身也需判素;第 52 个梅森素数(2024 年发现)有四千多万位,用的正是 Miller–Rabin 类检验。
例 12 证明:对任意正整数 n,C(n, 2) = n(n−1)/2 是整数(即 2 | n(n−1)),并把同样的论证升级到 3 | n(n−1)(n−2)。
解(代数):连续两数一奇一偶,2 | n(n−1)。
解(组合——TheBook 偏爱):n(n−1)/2 就是从 n 人中选 2 人的方案数,方案数天生是整数——整除性不需要证明,它是「计数意义」的赠品。
升级 3 | n(n−1)(n−2):三数中必有一个 3 的倍数(mod 3 穷举三情形);组合读法:n(n−1)(n−2)/6 = C(n,3) 是选 3 人方案数——一次看清 2 与 3 同时整除,还看清了那个 6 从哪来。
本章收官题的双重解法正是全章的方法论缩影:代数解法(mod 穷举)是第三章的种子,组合解法(计数必整)是第二章项链证明的种子——两条种子在互反律的 TheBook 证明里开花。
练 1.1 证明:若 n 为奇数,则 8 | n2 − 1。
提示:n = 2k+1,n2 − 1 = 4k(k+1),连续两数一偶,且偶的那个是 2 的倍数——分 mod 4 两情形细账:k 偶则 8 | 4k,k 奇则 k+1 ≡ 2 (mod 4)。答案:恒整除,因子 8 严丝合缝。
练 1.2 求 1000 除以 7、−1000 除以 7 的商与余数。
答案:1000 = 7×142 + 6;−1000 = 7×(−143) + 1。负数时注意左栏杆取 −1001(7×(−143)),余数 1 非负。
练 1.3 证明:若 a | b 且 b | a(a, b 非零),则 a = ±b;再举例说明「a | b 且 a ≠ b」完全可能(a, b 正)。
性质④的复述题;正数例:a = 1, b = 7(1 | 7 但 7 ∤ 1)。
练 2.1 用 √n 门槛判定 397 是否素数。
√397 < 20,试 2, 3, 5, 7, 11, 13, 17, 19:397 奇;数字和 19;尾非 0/5;397 = 7×56+5 = 11×36+1 = 13×30+7 = 17×23+6 = 19×20+17——全余,397 是素数。
练 2.2 证明:连续 k 个合数可以任意长(提示:考虑 (k+1)! + 2, …, (k+1)! + k+1)。
对每个 j = 2, …, k+1,(k+1)! + j 有因子 j 且商大于 1——素数间隙没有上限,但 Bertrand 假设说间隙总在 2n 之内重开。两件事不矛盾:间隙长而稀、整体仍稠密。
练 3.1 求 gcd(352, 221) 的一组 Bézout 系数。
352 = 1×221 + 131;221 = 1×131 + 90;131 = 1×90 + 41;90 = 2×41 + 8;41 = 5×8 + 1。回代:1 = 41 − 5×8 = 41 − 5×(90 − 2×41) = 11×41 − 5×90 = 11×(131 − 90) − 5×90 = 11×131 − 16×90 = 11×131 − 16×(221 − 131) = 27×131 − 16×221 = 27×(352 − 221) − 16×221 = 27×352 − 43×221。验证:9504 − 9503 = 1 ✓。
练 3.2 设 gcd(a, b) = 1。证明:gcd(a + b, ab) = 1。
设素数 p | (a+b) 且 p | ab。由 Euclid 引理 p | a 或 p | b;又 p | a+b ⟹ p 也整除另一个——p 是公因数,与 gcd(a,b)=1 矛盾。答:互素。
练 4.1 用辗转相除法求 gcd(46368, 28657),并数一数步数。这两个数有来头吗?
它们是相邻 Fibonacci 数 F24 与 F23!gcd = 1,步数 22 = 24 − 2——Lamé 定理的最坏情形现场:相邻 Fibonacci 数把算法拖到最满。
练 4.2 证明:对一切 n ≥ 1,gcd(Fn+1, F_n) = 1(用 mod 链的恒等式 Fn+1 = F_n + Fn−1)。
gcd(Fn+1, F_n) = gcd(F_n, Fn+1 − F_n) = gcd(F_n, Fn−1),递降到 gcd(F2, F1) = gcd(1, 1) = 1——Euclid 算法在 Fibonacci 上的「恒等下降」。
练 5.1 求 −17 在 mod 43 下的逆元。
先取正代表:−17 ≡ 26 (mod 43)。Euclid:43 = 1×26 + 17;26 = 1×17 + 9;17 = 1×9 + 8;9 = 1×8 + 1。回代 1 = 9 − 8 = 9 − (17 − 9) = 2×9 − 17 = 2×26 − 3×17 = 2×26 − 3×(43 − 26) = 5×26 − 3×43。故 26−1 ≡ 5,即 −17 的逆元 ≡ 5 (mod 43)(验证:−17×5 = −85 = −2×43 + 1 ✓)。
练 5.2 证明:n 与 n+1 互素;n 与 n! + 1 互素。
连续整数公因数整除 1;n! + 1 除以任何 d ≤ n(d | n!)余 1。两题都是「结构性互素」——分解根本不用出场。
练 6.1 两个齿轮分别 24 齿与 40 齿,同时从标记齿开始转动,最少转几圈后标记齿再次同时回到起点?
lcm(24, 40):24 = 23×3,40 = 23×5,lcm = 23×3×5 = 120 齿 = 24×5 圈 = 40×3 圈。答:转 5 圈(24 齿轮)与 3 圈(40 齿轮)。
练 6.2 已知 lcm(a, b) = 120、gcd(a, b) = 4、a < b 且 a 不整除 b。求 (a, b)。
ab = 480。设 a = 4m, b = 4n,gcd(m, n) = 1,mn = 30。互素分解对:(1,30), (2,15), (3,10), (5,6)。排除 a | b((1,30))与 lcm 错配:lcm = 4mn = 120 ✓ 全部吻合,但 (1,30) 被「a ∤ b」排除;(2,15):a=8,b=60,8 | 60? 否,60/8 非整 → 但 lcm(8,60)=120 ✓ 且 gcd=4 ✓——(8, 60) 与 (12, 40)(a | b? 12∤40 ✓, lcm(12,40)=120 ✓, gcd=4 ✓)与 (20, 24)(20∤24, lcm=120, gcd=4 ✓)。答案不唯一:(8,60), (12,40), (20,24) 都符合——条件要补「a + b 最大」才能锁定 (8, 60)。反思题:条件与解的不唯一性本身就是好教材。
练 7.1 《张丘建算经》百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?
设翁 x、母 y、雏 z:x + y + z = 100,5x + 3y + z/3 = 100。消 z(三倍价账):15x + 9y + z = 300,减去第一式得 14x + 8y = 200,即 7x + 4y = 100。gcd(7, 4) = 1 | 100 ✓。特解 x = 0, y = 25;通解 x = 4t, y = 25 − 7t, z = 100 − x − y = 75 + 3t。全正约束:t ≥ 1(x ≥ 1),25 − 7t ≥ 1 → t ≤ 3。答:三组解:(4, 18, 78), (8, 11, 81), (12, 4, 84)。《张丘建算经》原书答「翁四、母十八、雏七十八」及另两组——与本题全同。
练 8.1 证明:若 a2 | b3,则 a | b。
逐素数对账:设 pe ∥ a(pe 恰好整除 a),则 p2e | b3 ⟹ b 中 p 的幂次 ≥ ⌈2e/3⌉ ≥ e。FTA 让「整除」变成指数比较——这就是「宪法的用处」。
练 8.2 n 的哪些标准分解形状使 n 是完全平方数?立方数呢?
所有指数全偶 ⟺ 平方数;全为 3 的倍数 ⟺ 立方数。FFT 视角:完全平方数的因子格关于「指数折半」有中心对称。
练 9.1 求最小的正整数 n 使 τ(n) = 10。
10 = 10×1 或 5×2。形状一:n = p9,最小 29 = 512。形状二:n = p4q(τ = 5×2),把大指数配给小素数:24×3 = 48。答:48(验证:48 = 24×3,τ = (4+1)(1+1) = 10 ✓)。
练 9.2 证明:σ(n) 为奇数 ⟺ n 是平方数或平方数的两倍。
σ(pa) = 1+p+⋯+pa 的奇偶:p = 2 时恒奇;p 奇时项数 a+1 决定(a 偶 ⟹ 奇项数 ⟹ 和奇)。全部分项皆奇 ⟹ 每个奇素数指数皆偶(且 2 的幂任意)——n = 平方数或 2×平方数。这是 σ 奇偶性的经典刻画。
练 10.1 σ(n) > 2n 称「盈数」、< 2n 称「亏数」。判别 12、14、945 的盈亏。
12 = 22×3:σ = 7×4 = 28 > 24 盈;14 = 2×7:σ = 3×8 = 24 < 28 亏;945 = 33×5×7:σ = 40×6×8 = 1920 > 1890 盈——945 是最小的奇盈数。
练 10.2 证明:若 2p − 1 是素数,则 n = 2p−1(2p − 1) 完全。
σ(n) = (2p − 1)·(2p) = 2n——正是 Euclid 两千年前的构造;Euler 补的是「偶完全数别无分店」。奇完全数?仍是悬案(已排除到 101500)。
练 11.1 用 π(x) 采样表估算「随机取一个小于 106 的整数,恰是素数」的概率,并与 1/ln(106) 对照。
78498/106 ≈ 7.85%;1/ln 106 ≈ 7.24%——素数定理的局部版已相当贴。
练 11.2 用 Bertrand 假设证明:对 n ≥ 2,存在素数 p 使 n < p < n!。
对 n ≥ 4:Bertrand 给 n/2 < q < n 的素数 q;n! 与 q 的关系不直接。改路:Bertrand 作用于 n:存在素数 n < p < 2n ≤ n!(n ≥ 4)。n = 2, 3 手工核(3 < 5 < 6? p=5 ✓)。
三问自测(不翻书作答,答不上再回讲义)
第一问 · 定义关:带余除法唯一性的证明里,「长度为 b 的区间里唯一的 b 倍数是 0」用到了什么?——若想不清,回 1.3 节(答案:0 ≤ r′ − r < b 的夹逼)。
第二问 · 证明关:Bézout 证明第一步为什么「d 整除 a」?关键动作是什么?——回 1.7 节(答案:在组合世界里用带余除法造出更小的正元,逼 r = 0)。
第三问 · 结构关:Euclid 引理为什么是 FTA 唯一性的命门?ℤ[√−5] 坏在哪里?——回 1.13 节(答案:唯一性每一步消素数都靠它;ℤ[√−5] 中 6 = 2×3 = (1+√−5)(1−√−5) 两串分解不可调和,因为「不可约 ≠ 素元」)。
错题归档表(建议格式)
| 错题 | 错因归类 | 对应讲义 | 重做日期 |
|---|---|---|---|
| 概念不清 / 步骤跳步 / 情形漏穷举 / 计算失误 | § | ||
| § |
复盘的检验标准不是「看懂了」,而是合上书能把证明重写出来。第一章的四个必背证明:带余除法唯一性、Bézout、互素消去律、FTA 唯一性——都是「一行一逻辑」的短证明,值得逐字过关。
《九章算术》方田章开篇讲田亩测量,随即遇到一个绕不开的技术问题:分数要约分。约分的全部难点在一个词——「等数」,也就是今天说的 gcd。刘徽注引的术文写道:
《九章算术》卷一 · 约分术
可半者半之;不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。
能对半分的先对半分;不能的,把分母、分子分列两旁,以少减多,辗转相减,求出「等数」(最大公约数),再用它去约。
拿 49/91 走一遍:「副置」两数 91、49;91 − 49 = 42,49 − 42 = 7,42 − 7 = 35,35 − 7 = 28,…(连减到)7 − 7 = 0——更相减损的账本会连减到底;术文允许求速:42 ÷ 7 恰尽,知等数为 7。约分得 49/91 = 7/13。
两处细节见精神。其一,「可半者半之」是 speed-up:先剥离 2 的因子——这与今天的「二进制 gcd」思想一致。其二,Euclid《原本》第七卷命题 1–2 的原始证法其实也是反复相减,带余除法是后人的打包优化——东西方在同一算法上各自独立地走到了一起,殊途而同归。
本章出现了三次「取最小」:带余除法里取最大的 q(1.3 节)、Bézout 里取最小的正组合(1.7 节)、FTA 里取最小的反例(1.12 节)。三次的背后是同一条公理:
良序原理 自然数的任何非空子集都有最小元。
它看似废话,实则威力惊人——它与数学归纳法逻辑等价:归纳法「爬梯子」,良序「抓最低的梯级」。数论的证明传统偏爱良序,因为反证时它给的是一个具体的对手(最小反例),可分析、可撕碎。
一个值得咀嚼的哲学观察:良序原理不是自然数的当然属性——整数的负半轴、正有理数集都没有最小元。「自然数良序」与「归纳法可用」是同一枚硬币,皮亚诺公理体系把两者焊在一起。下一章,这套「公理化的自觉」将升级为群论的语言:我们将不再一个个地研究数的性质,而是研究运算本身的结构。
本章的骨架是一条「良序驱动链」:带余除法立折叠 → Bézout 抓 gcd → 互素开可逆 → Euclid 引理保唯一 → FTA 立宪法 → τ、σ 发红利。六个枢纽,每一步都由上一步供电。
知识图谱(文字版)
折叠层:带余除法 1.3(良序)→ 每个 a 有唯一 (q, r) → 「影子」合法。
公因数层:Bézout 1.7(组合世界)→ 辗转相除 1.8(mod 收缩)→ 互素 = 可逆 1.9。
乘法结构层:互素消去律 1.10 → Euclid 引理 1.13 → FTA 1.12+1.13 → τ, σ 1.16。
出口层:素性判定 1.4 → Fermat/MR 预告 1.17 → 第二章同余。
必背证明四条(合书重写级)
| 定理 | 核心动作 | 页码 |
|---|---|---|
| 带余除法唯一性 | 相减 + 区间夹逼 | 1.3 |
| Bézout 恒等式 | 最小正元 + 造更小正元逼零 | 1.7 |
| 互素消去律 | Bézout 两边乘 b | 1.10 |
| FTA 唯一性 | Euclid 引理逐对消素数 | 1.13 |
三件兵器交给第二章:良序降模(在同余世界里继续用带余除法)、Bézout 逆元(1.9 节的四面孔将变成单位群的主角)、互素消去(CRT 的相容性论证)。
无限多的整数,被一个模数 b 折叠成有限的 b 个抽屉。抽屉里的数彼此「不可区分」——这不是缺陷,而是信息的压缩:判断 385 的奇偶不必看 385 全身,看它的影子 1 就够。
本章证明了折叠的合法性(带余除法唯一性):每个整数恰有一个影子。于是「研究整数」的一部分工作可以降维成「研究影子」——第二章给影子起正式的名字(剩余类),并发现影子们自己会做加法、乘法(群与环)。
一语蔽之:数论的第一步不是发现新数,而是学会失去信息——并且精确地控制失去了什么、保留了什么。
思想卡的另一面值得记录:折叠保留了什么?加法的影子保真(385 + 24 的奇偶性 = 影子 + 影子的奇偶性),乘法也保真——但除法不保真:6 和 2 影子不同(mod 4),可 6 ÷ 2 = 3 的影子没法由影子的除法得出。哪里保真、哪里失真,正是第二章「同余运算规则」(2.8 节)要精确划定的边界。
把 1.12 与 1.13 的两半合并,独立完成整座桥。允许引用:带余除法(1.3)、Bézout(1.7)、互素消去律(1.10)。分五步走:
第一步(引理桥) 证明:p 素数且 p | ab ⟹ p | a 或 p | b。
提示:p ∤ a 时 gcd(p, a) = 1(p 的因数只有 1、p),套互素消去律。
第二步(推广) 证明引理对任意 k 个因子的乘积成立:p | a1a2⋯a_k ⟹ 某个 a_i 被 p 整除。
提示:对 k 归纳,第一步是 k = 2。
第三步(存在性) 最小反例法:设 n 是不能写成素数乘积的最小整数(> 1)。n 非素(否则 n = n 是分解),故 n = ab,1 < a, b < n;由最小性 a、b 都可分解,拼出 n 的分解——矛盾。
第四步(唯一性) 设 n = p1p2⋯p_r = q1q2⋯q_s 是两组素数分解(都按大小排列)。p1 整除右边,由第二步 p1 = 某 q_j;同为素数迫使 q_j = p1。两边约去 p1(两边除以它仍是整数),对 n/p1 重复——归纳到底。若一边提前耗尽,另一边剩的素数乘积 > 1 整除 1,矛盾。
第五步(标准形) 把相同素数合并成幂,得标准分解 n = p1a1⋯p_ra_r,并证明 τ(n) = ∏(a_i + 1)。
验收标准:五个步骤中,不允许出现「显然」——每一步的合法性都要指明引用哪条已证结果。完成本挑战,就拥有了三千年数学史的压舱石。
目标:n > 1 时存在素数 p 使 n < p < 2n。Erdős 十七岁的证明是组合数论的杰作——把「存在大素数」化归为「二项式系数足够大」。以下路线图留白关键步:
步 1(归约) 只需对 n ≥ 2 证「(n, 2n) 中有素数」。反设:对某 n,区间 (n, 2n) 无素数。先取 n 使 n ≥ 2 的最小反例 n0,并说明可以假设 n0 ≥ 512(手工验证 n < 512 的情形即可——留白:给一个验证策略)。
步 2(中心二项式) 考虑 C(2n, n) = (2n)!/(n!)2。证明它是整数(组合意义),且 4n/(2n+1) ≤ C(2n, n) < 4n(上界由 (1+1)2n = Σ C(2n, k) > C(2n, n) 与均分估计)。
步 3(素数幂的审计) 关键引理(留白):pk ∥ C(2n, n) 时 k ≤ log2(2n)。证明思路:对 pk 整除 C(2n, n) 的情形,若 pk > 2n 则 pk 必整除 (2n)! 的两个「孤悬因子」(结合 p > √(2n) 时阶乘中 p 的幂公式)。
步 4(中段素数的角色) 若 (n, 2n) 无素数,则 C(2n, n) 的素因子都 ≤ n(或 = 2)。审计它们的总贡献:C(2n, n) ≤ (2n)√(2n) × 42n/3 级别——比步 2 的下界 4n/(2n+1) 矛盾(对 n ≥ 512)。
步 5(收网) 合并步 1–4 的不等式,得矛盾。∎
TheBook 评语:这个证明的口味是纯组合的——不碰微积分、不碰复分析,只数数。完整细节可读 Erdős 1932 年原文的重述(Aigner & Ziegler《Proofs from THE BOOK》第 4 章)。第五章的互反律证明会再次使用「审计素数贡献」的账本手法。
实验目标:亲手验证 Lamé 定理——相邻 Fibonacci 数把 Euclid 算法拖到最满。程序三件事:数步数、画收缩链、扫全表找最慢。
def esteps(a, b): # 辗转相除步数
s = 0
while b: a, b = b, a % b; s += 1
return s
# 1) 相邻 Fibonacci 对账(Lamé:gcd(F(k+1), F(k)) 用 k−1 步)
fib = [1, 1]
while len(fib) < 15: fib.append(fib[-1] + fib[-2])
for k in range(2, 14):
print(k, esteps(fib[k+1], fib[k])) # 输出恰为 k−1
# 2) 扫描全表:1000 以内哪一对最慢?
best = max(((esteps(a, b), a, b) for a in range(2, 1000)
for b in range(2, a)), default=(0, 0, 0))
print(best) # 步数最多的一对,恰是相邻 Fibonacci!观察任务:①步数序列 1, 2, 3, 4, 5, 6, …(对相邻 Fibonacci)是否严格等差?②全表扫描的最慢对是 (987, 610) = (F16, F15),步数 14——为什么 Fibonacc 是「收缩最慢」的?直觉:mod 的意义是「砍掉一整段」,而 Fibonacci 数的商 q 全是 1,一砍只砍一小段。商全 1 = 降模最温和 = 步数最多。③挑战:证明 Fibonacci 相邻对在所有 ≤ n 的数对中步数最多(Zeilberger 有一个四页证明)。
T1(8 分) 求 2024 除以 37 的商与余数,并用「商 × 除数 + 余数 = 被除数」验证。
2024 = 37 × 54 + 26。验证:37 × 54 = 1998,1998 + 26 = 2024 ✓。
T2(12 分) 证明:3 | n3 − n 对一切整数 n 成立,并指出证明用了 mod 几的几种情形。
n3 − n = (n−1)n(n+1) 三连数,mod 3 穷举三情形必有一个 ≡ 0;也可按 n mod 3 = 0, 1, 2 直接验 n3 − n ≡ 0。三情形。
T3(16 分) 求 gcd(2024, 1547) 的 Bézout 表达(可用例 5 的 mod 链),并写出 2024 在 mod 1547 下的逆元。
例 5 链:477 = 2024 − 1547;116 = 1547 − 3×477;13 = 477 − 4×116;12 = 116 − 8×13;1 = 13 − 12。回代:1 = 13 − (116 − 8×13) = 9×13 − 116 = 9×(477 − 4×116) − 116 = 9×477 − 37×116 = 9×477 − 37×(1547 − 3×477) = 120×477 − 37×1547 = 120×(2024 − 1547) − 37×1547 = 120×2024 − 157×1547。逆元:2024−1 ≡ 120 (mod 1547)。验证:2024×120 = 242880 = 157×1547 + 1 ✓。
T4(16 分) 证明:若 gcd(a, 210) = 1,则 a 与 2、3、5、7 中每一个都互素;并说明由此可得「a 在 mod 210 的乘法世界里可逆」。以 a = 11 为例,求出它在 mod 210 下的逆元。
互素逐素数继承:gcd(a, 210) = 1 意味着没有公因数,而 210 = 2×3×5×7 的因数全由这四个素数拼成。11 的逆元:11×191 = 2101 = 10×210 + 1 → 11−1 ≡ 191 (mod 210)。
T5(18 分) 用 τ 公式解释:为什么有 8 个因子的最小数是 24?给出全部论证(枚举 8 的分解形状 + 最小化)。
8 = 8×1 → p7 → 27 = 128;8 = 4×2 → p3q → 23×3 = 24;8 = 2×2×2 → pqr → 2×3×5 = 30。最小 24。论证要点:大指数给小素数。
T6(30 分) 综合证明:设 n > 1。证明 (a) n 的第二大的因数是 n/p,其中 p 是 n 的最小素因子;(b) 由此推出:n 是素数 ⟺ n 的第二大因数是 1。
(a) 设 d 是第二大因数。n/d 是 n 的最小「对偶」因数(因数成对 d·(n/d) = n),n/d > 1 且 n/d 最小 → n/d 是素数 p(若合数还有更小因子)→ d = n/p。(b) p = n ⟺ n 素。
评讲要点
T1–T2 查「折叠基本功」与穷举意识;T3 查回代链条(写全每一步);T4 意在教会学生识别问题是否已在本章工具范围内——有些命题要等 Fermat 小定理(第二章)才够得着,识别边界也是能力;T5 查 FTA 的组合用法;T6 查因数对偶结构。总分 100,70 分以上进入第二章。
1801 年,24 岁的高斯出版《算术研究》,第一句话就发明了一个记号——此后数论的语言再也不一样了:
《算术研究》§1 · 同余记号的诞生〔大衍〕
若 a 除以 n 的余数与 b 除以 n 的余数相同,则称 a 与 b 同余,记作
a ≡ b (mod n).
高斯自注:这个记号「表示两数对模 n 的关系」,横线上的双划提醒我们——这是一种相等,只不过是折叠世界里的相等。
一千五百年前的物不知数,在高斯的记号下三行写清:求 x 使 x ≡ 2 (mod 3)、x ≡ 3 (mod 5)、x ≡ 2 (mod 7)。同一个数 23 在三个模子下留下三道影子:
本章路线:先给同余立运算规则(2.2–2.3),再把影子升格为代数对象——加法群 ℤ/nℤ(2.4)、单位群 (ℤ/nℤ)×(2.5)、群论速成(2.6);随后挥师中国剩余定理与大衍求一术(2.9–2.11),以 Wilson 与 Fermat 的组合证明收束(2.12–2.13)。
定义 2.2.1(同余) n 为正整数。若 n | (a − b),称 a 与 b 模 n 同余,记 a ≡ b (mod n);否则记 a ≢ b (mod n)。
定义里没有出现「余数」——同余被翻译成整除,这步翻译是高斯记号的力量所在(一切整除工具立刻可用)。由定义立刻读出三条:自反(a ≡ a)、对称(a ≡ b ⟹ b ≡ a)、传递(a ≡ b ≡ c ⟹ a ≡ c)——同余是一个等价关系,这是现代数学对「折叠」的正式称呼。
定理 2.2.2(运算保真) 若 a ≡ b, c ≡ d (mod n),则
① a + c ≡ b + d; ② a − c ≡ b − d; ③ ac ≡ bd; ④ 递推得 ak ≡ bk(k 正整数)。
证明 ①②:n | (a−b), n | (c−d) ⟹ n | (a−b)±(c−d)。③:ac − bd = (a−b)c + b(c−d),两项都是 n 的倍数(性质②的线性组合)。④:③反复用。∎
③的证明是一行线性组合——第一章性质②在折叠世界的第一次领薪。但注意除法不保真:2×3 ≡ 0 (mod 6) 而 2, 3 都 ≢ 0——两个非零影子的乘积可以塌到零(「零因子」现象),这正是 2.5 节单位群必须把「可逆者」单独圈出来的原因。看 mod 5 的抽屉:
定义 2.3.1(剩余类与完全剩余系) [a]_n = {b : b ≡ a (mod n)} 称为 a 所在的剩余类。从 n 个类中各取一名代表,所得集合称为完全剩余系。
代表元的选取自由而任意:{0, 1, …, n−1}、{1, 2, …, n}、对称系 {−(n−1)/2, …, (n−1)/2}(n 奇)都是合法的完全剩余系。代数运算与代表元的选取无关——定理 2.2.2 的真正含义:剩余类的加法、乘法是良定义的。这一步「与代表元无关」的自觉,是抽象代数的胎动:我们开始操作对象本身,而非它们的化名。
例(mod 5 的三种取法对账)
| 取法 | [0] | [1] | [2] | [3] | [4] | 用途 |
|---|---|---|---|---|---|---|
| 最小非负 | 0 | 1 | 2 | 3 | 4 | 默认 |
| 从一起 | 5 | 1 | 2 | 3 | 4 | 历史文献 |
| 对称系 | 0 | 1 | 2 | −2 | −1 | 省字:Gauss 引理 |
对称系在第五章 Gauss 引理中会大放异彩——「以少减多」的古老直觉,将在那里变成 (p/2, p) 区间的代表元跳跃计数。眼下只需记住:代表元是化名,剩余类才是本人。
定义 2.4.1(群) 集合 G 带二元运算 · 称为群,若:① 封闭;② 结合律 (a·b)·c = a·(b·c);③ 有单位元 e(e·a = a);④ 每个元素有逆元 a−1(a·a−1 = e)。再若 a·b = b·a 恒成立,称交换群(阿贝尔群)。
定理 2.4.2(加法群) ℤ/nℤ 的剩余类集合带加法 [a] + [b] = [a + b] 构成交换群。
证明 封闭与良定义:若 a ≡ a′, b ≡ b′,则 a+b ≡ a′+b′(定理 2.2.2 ①)——运算结果与化名无关。结合律与交换律从整数继承(整数里成立,取类后仍成立);单位元 [0];逆元 [−a] = [n−a]。∎
证明中最要紧的一句是「与化名无关」:群论的世界里,[3] 不是「数字 3」,而是整个抽屉——抽屉之间做运算,结果的抽屉不因从抽屉里挑了哪个代表而改变。mod 5 的加法表(Cayley 表):
ℤ/5ℤ 的加法表
| + | [0] | [1] | [2] | [3] | [4] |
|---|---|---|---|---|---|
| [0] | [0] | [1] | [2] | [3] | [4] |
| [1] | [1] | [2] | [3] | [4] | [0] |
| [2] | [2] | [3] | [4] | [0] | [1] |
| [3] | [3] | [4] | [0] | [1] | [2] |
| [4] | [4] | [0] | [1] | [2] | [3] |
观察三件事:①每行是上一行的左移一格(循环性!第四章的主角);②每行每列都是全部元素的排列(拉丁方——逆元存在的表格化表述);③[0] 那行列原样不动(单位元)。
现代注脚:ℤ/nℤ 的加法群是循环群——整个群由 [1] 反复自加生成:[1] → [2] → … → [n−1] → [0] → [1]。这枚「生成元」的种子,第四章将长成原根理论:乘法世界里,谁的幂走遍全群?
乘法同样保真(定理 2.2.2 ③):[a]·[b] = [ab]。但它造不成群——[0] 没有逆(除 1 = n 的退化情形),复合数还混进「零因子」:[2]·[3] = [0] (mod 6)。把可逆的类单独圈出来,得到一个惊人的干净世界:
定理 2.5.1(单位群) (ℤ/nℤ)× = {[a] : gcd(a, n) = 1} 带乘法构成群。它的元素个数是 φ(n)(Euler 函数,2.14 节)。
证明 ⟸ 若 gcd(a, n) = 1,Bézout 给 ma + kn = 1,取类:[m][a] = [1]——[a] 有逆 [m]。⟹ 若 [a][b] = [1],则 ab ≡ 1 (mod n),n | ab − 1,任何公因数 c | a, n 整除 1,故 gcd(a, n) = 1。封闭性由 gcd(a, n) = gcd(b, n) = 1 ⟹ gcd(ab, n) = 1(1.10 节互素传递)。∎
Bézout 恒等式在此兑现为「逆元」——1.9 节的四面孔正式上岗。看 mod 10 的单位群(与 10 互素的剩余类恰四个):
(ℤ/10ℤ)× 的乘法表(单位群实例)
| × | [1] | [3] | [7] | [9] |
|---|---|---|---|---|
| [1] | [1] | [3] | [7] | [9] |
| [3] | [3] | [9] | [1] | [7] |
| [7] | [7] | [1] | [9] | [3] |
| [9] | [9] | [7] | [3] | [1] |
三个观察:①[3] 的幂走遍全群([3] → [9] → [7] → [1])——3 是生成元,阶 4;②[9] = [3]2 阶 2;③[1]2 = [1]、[9]2 = [9]——两个「自逆元」,预演 Wilson 定理的配对论证(2.12)。
定义 2.6.1(子群) 群 G 的非空子集 H 称为子群,若 H 自带运算也成群(封闭 + 逆元在 H 内)。
定理 2.6.2(Lagrange 定理) 有限群 G 的子群 H 满足 |H| 整除 |G|。整除的商 [G : H] = |G|/|H| 是陪集的个数。
证明(TheBook 版:一次分蛋糕) 定义陪集 aH = {ah : h ∈ H}。三条:①任意两个陪集要么相等要么不交(aH ∩ bH ≠ ∅ ⟹ b−1a ∈ H ⟹ aH = bH);②每个陪集大小 = |H|(ah ↦ a 是双射);③全体陪集覆盖 G(a ∈ aH)。于是 G 被切成若干块大小 |H| 的蛋糕,块数 × |H| = |G|。∎
立即兑现的红利:设 G 是交换群、a ∈ G,则 a 的所有幂构成子群 ⟨a⟩,其大小恰是 a 的阶。由 Lagrange:任何元素的阶整除群阶。对 G = (ℤ/pℤ)×(|G| = p − 1,第四章),这句话就是 Fermat 小定理的群论前身——组合的项链证明(2.13)与群的切蛋糕证明将在那里会师。
把加法(2.4)与乘法(2.5)合起来,剩余类集合成了一座完整的代数建筑:
定义 2.7.1(交换环) 带加法与乘法、满足加法交换群 + 乘法结合交换 + 分配律 + 有乘法单位 1 的集合称为交换环;若 further 每个非零元都可逆,称为域。
定理 2.7.2(环与域的分界)
① ℤ/nℤ 对任何 n ≥ 2 是交换环;
② ℤ/nℤ 是域 ⟺ n 是素数。
证明 ① 分配律 a(b+c) = ab + ac 在整数里成立,取类后仍成立。②(⟸)p 素数时,任何 [a] ≠ [0] 即 gcd(a, p) = 1(p 的因数只有 1 与 p),由定理 2.5.1 可逆——非零元全可逆,域。(⟹)n = ab 合数(1 < a, b < n):[a]·[b] = [ab] = [0],两个非零元乘出零——零因子在场,域的资格取消。∎
「模 p 是域」是第三章的全部地基:域里能约分、多项式根不超过次数(Lagrange)——这些在环里都会失灵。素数的代数性格在此定型:素数恰好是让折叠世界不产生零因子的模数。
折叠世界的四则规则中,「除法」最微妙。它的两个精确版本:
定理 2.8.1(消去律) 设 ab ≡ ac (mod n),g = gcd(a, n)。
① 若 gcd(a, n) = 1,则 b ≡ c (mod n)(可逆即可消);
② 一般地 b ≡ c (mod n/g)。
证明 ① a 可逆:两边乘 a−1。② n | a(b − c)。写 n = g n′、a = g a′、gcd(a′, n′) = 1,则 n′ | a′(b − c),由①(对 n′ 与 a′)n′ | b − c。∎
规则②是「带着公因数消去」的精确账:消去 a 的同时,模也要降。例:2×3 ≡ 2×0 (mod 6),消去 2 得 3 ≡ 0 (mod 3)——mod 6 里不能消,降到 mod 3 就能消。这就是降模。「升模」是反方向:mod 3 的信息自动升到 mod 6、mod 12(只要结论形如 n | t,则任何 n 的倍数也整除 t)。
例(消去律全程演算) 解 4x ≡ 2 (mod 6)。
g = gcd(4, 6) = 2 | 2 ✓ 有解(判据:g | b,习题课二细讲)。两边除以 2:2x ≡ 1 (mod 3)。2−1 ≡ 2 (mod 3)(2×2 = 4 ≡ 1),故 x ≡ 2 (mod 3)。升回 mod 6:x ≡ 2, 5 (mod 6)——两个解,恰 g 个。验:4×2 = 8 ≡ 2 ✓,4×5 = 20 ≡ 2 (mod 6) ✓。
把开篇之题正式解一遍——这次用「影子逐条落实」的现代姿势:
求解物不知数 x ≡ 2 (mod 3),x ≡ 3 (mod 5),x ≡ 2 (mod 7)。
第一步:先管前两条。x = 2 + 3k,代入第二条:2 + 3k ≡ 3 (mod 5) ⟹ 3k ≡ 1 (mod 5) ⟹ k ≡ 2 (mod 5)(3−1 ≡ 2,因 3×2 = 6 ≡ 1)。故 k = 2 + 5t,x = 8 + 15t——x ≡ 8 (mod 15)。
第二步:并入第三条。x = 8 + 15t ≡ 2 (mod 7)。15 ≡ 1, 8 ≡ 1 (mod 7),故 1 + t ≡ 2 ⟹ t ≡ 1 (mod 7)。x = 8 + 15 = 23 (mod 105)。∎
策略:两条两条并——每并入一条,模就乘一次。三步之后通解 x ≡ 23 (mod 105),与《孙子》的「答曰二十三」及口诀账(0.1 节)三路会合。
定理 2.10.1(中国剩余定理 CRT) m, n 互素,则方程组 x ≡ a (mod m)、x ≡ b (mod n) 在 mod mn 意义下恰有一解。
证明(TheBook 版) 存在:由 Bézout 取 u 使 nu ≡ 1 (mod m)。令 P = nu(P ≡ 0 (mod n),P ≡ 1 (mod m)),Q = mu(对称地 Q ≡ 1 (mod n),Q ≡ 0 (mod m))。令 x = aP + bQ:mod m 得 a×1 + b×0 = a ✓;mod n 得 a×0 + b×1 = b ✓。唯一:两解之差 d 同时 ≡ 0 (mod m, n),互素迫使 mn | d。∎
证明的骨架是两个「开关元」P 与 Q:P 在 m 世界是 1、在 n 世界是 0——像一只只按一个世界亮灯的开关。任何目标影组 (a, b) 都由开关加权合成。环同构的礼物:映射 x ↦ (x mod m, x mod n) 是环同构 ℤ/mnℤ ≅ ℤ/mℤ × ℤ/nℤ——折叠世界与「影子对」的世界结构全同,加乘都逐影子进行。
1247 年,秦九韶在《数书九章》中系统给出 CRT 的通用算法——大衍总数术,其中求「乘率」的核心步骤称大衍求一术。把古术逐词今译:
术语对译表〔大衍〕
| 秦九韶原语 | 今译 | 角色 |
|---|---|---|
| 问数(元数) | 模数 m1, m2, …(两两互素) | 筛网规格 |
| 定数 | 化约后的互素模数 | CRT 的前提检查 |
| 衍数 | M_i = M/m_i(M = ∏m_j) | 「别人家模数之积」 |
| 奇数 | P_i = M_i mod m_i | 降模后的代表 |
| 乘率 | k_i 使 k_i·P_i ≡ 1 (mod m_i) | 求一术的目标 = P_i 的逆元 |
| 用数 | k_i·M_i(= 2.10 节的开关元) | 加权合成的砝码 |
| 总数 | Σ a_i·k_i·M_i | 加权总和 |
| 满 M 去之 | mod M 取最小正代表 | 答案 |
「求一」二字直白:求出一个数,乘上去余一。求乘率的工具正是辗转相除的回代——秦九韶称「以奇模入之,辗转相减,得奇一而止」。用古术核一笔账:物不知数中 m3 = 7,衍数 M3 = 15,奇数 = 15 mod 7 = 1,乘率 = 1,用数 = 15——正是口诀里的「七子团圆正半月」!口诀的三个魔法数 70、21、15,原来就是三个用数:k_i·M_i。
定理 2.12.1(Wilson,1770 提出证明 / 1773 Lagrange 证毕) p 素数 ⟺ (p − 1)! ≡ −1 (mod p)。
证明(素数方向:舞会配对) 在 (ℤ/pℤ)× 这个 p − 1 人的舞会里,每位客人 a 的舞伴是它的逆元 a−1。配对规则:a 与自己配对 ⟺ a2 ≡ 1 ⟺ a = ±1(x2 − 1 = (x−1)(x+1) 在域中恰两根)。于是除 1 与 −1 两人落单外,其余 p − 3 人两两牵手,每对乘积 a·a−1 ≡ 1。全员连乘:(p−1)! ≡ 1 × (−1) × 1 × ⋯ × 1 = −1。∎
组合读法:p − 3 位客人分成 (p − 3)/2 对「互逆舞伴」——配对本身是一种双计数:按客人计数与按舞伴计数是同一批牵手的两种数法。
反向(−1 ⟹ 素数):若 n 合数,n = ab(1 < a ≤ b < n),则 a 是 (n−1)! 的一个因子(a 出现在阶乘中),且 a 与 (n−1)!/a 互不干扰地同除 n − 1 的阶乘——更直接:ab | (n−1)!(a ≠ b 时两因子分别出现;a = b > 2 时 2a < n 使 a 出现两次),于是 (n−1)! ≡ 0 ≢ −1 (mod n)。∎
历史的趣味:Leibniz 早已知道此定理却未发表;Wilson 是学生时代猜到它;Lagrange 给出第一个证明;Gauss 在《算术研究》里嫌弃试凑式验证、代之以一般理论,并顺手推广到双阶乘((p−2)!! ≡ 1)。「素数 ⟺ 阶乘 ≡ −1」是素性的等价刻画——但作为判素工具毫无用处:算 (p−1)! 比试除贵得多。定理的价值在结构,不在效率。
定理 2.13.1(Fermat 小定理,1640) p 素数:(a) gcd(a, p) = 1 ⟹ ap−1 ≡ 1 (mod p);(b) 任意整数 a:ap ≡ a (mod p)。
证明(项链计数——TheBook 组合版) 取 a 种颜色给 p 颗珠子染色,数「彩绳」:共 ap 条。让循环群 ℤ/p 作用在彩绳上(转动):p 是素数,轨道大小只能是 1 或 p(轨道大小整除 p,Lagrange)。哪些绳的轨道是 1?转动不变 ⟹ 全绳同色,恰 a 条。于是花绳数 ap − a 被 p 整除,即 p | ap − a。(b) 得证。(a):a 与 p 互素时,两边消去 a(消去律)得 ap−1 ≡ 1。∎
组合证明的齿轮:素性保证「轨道要么不动、要么整整转一圈」——没有 3 条、5 条这种中间尺寸。合成数模的世界里这台齿轮立刻卡住(轨道大小可以是真因子)。
多项式视角(第三章预演):ap ≡ a 对一切 a 成立,等于说多项式 xp − x 在 mod p 下有 p 个根——次数 p 的方程恰有 p 个根,「根不超过次数」的 Lagrange 定理与「完全分裂」现象都在这里探头。第三章将把这双眼看全。
Fermat 小定理依赖素数模——合成模的舞会里有人不可逆。Euler 的推广把主角换成「可逆者的全体」:
定义 2.14.1(Euler φ 函数) φ(n) = #{1 ≤ a ≤ n : gcd(a, n) = 1}——不超过 n 且与 n 互素的正整数个数。它正是单位群 (ℤ/nℤ)× 的大小。
定理 2.14.2(Euler 定理,1763) gcd(a, n) = 1 ⟹ aφ(n) ≡ 1 (mod n)。
证明(缩系重排) 取缩系(既约剩余系)R = {r1, …, rφ(n)}:全体与 n 互素的代表。乘 a 后的集合 aR = {ar1, …, arφ(n)} 仍是缩系——元素两两不同(a 可逆,ar_i ≡ ar_j ⟹ r_i ≡ r_j)且个个与 n 互素。两个缩系是同一批人的两种排列,全体连乘相等:R 的积 ≡ (aR) 的积 = aφ(n) × R 的积,消去 R 的积(可逆)即得。∎
这是「重排证明」的原型:交换群作用在自己的集合上保持结构。p 素数时 φ(p) = p − 1,Fermat 小定理是欧拉定理的特例—— generalize by replacing "everything" with "everything invertible"。
缩系重排实拍(n = 10, a = 3)
| 缩系 R | [1] | [3] | [7] | [9] | 积 ≡ 1×3×7×9 = 189 ≡ 9 |
|---|---|---|---|---|---|
| aR = 3R | [3] | [9] | [1] | [7] | 34 × 189 ≡ 81 × 9 ≡ 9 → 34 ≡ 1 ✓ |
定理 2.15.1(φ 的计算公式)
① φ(p) = p − 1,φ(pk) = pk − pk−1 = pk(1 − 1/p);
② 积性:gcd(m, n) = 1 ⟹ φ(mn) = φ(m)φ(n)(CRT:与 mn 互素 ⟺ 与 m、n 分别互素);
③ 一般公式:φ(n) = n ∏p | n (1 − 1/p)。
对账(n = 360 = 23·32·5):φ = 360 × (1/2) × (2/3) × (4/5) = 96 ✓(预演算核过)。
φ 值瀑布(360 的账)
360 → 砍掉 2 的倍数:180 → 再砍 3 的倍数:120 → 再砍 5 的倍数:96.
每砍一个素数 p,留下 (p−1)/p 的幸存者——「逐素数过滤」正是容斥的瀑布版。第②条的 CRT 来源值得复述:x ↦ (x mod m, x mod n) 是双射,且「与 mn 互素」⟺「两个影子都与模互素」——互素性逐影子检查。
欧拉定理的日常用途是给指数「封顶」:算 aN mod n 时,指数 N 可以对 φ(n) 取余(gcd(a,n)=1 时)——指数瞬间变小。剩余的功耗由快速幂承担:把 N 写成二进制,逐位平方。
例(双剑合璧) 算 2100 mod 13。
第一步(Fermat 封顶):φ(13) = 12,100 = 8×12 + 4,故 2100 ≡ 24 = 16 ≡ 3 (mod 13)。
第二步(快速幂的折半账,若不用封顶):21 → 22 → 24 → 28 → 216 → 232 → 264 七次平方(mod 13 逐次降模),再按 100 = 64+32+4 挑三块相乘——7 次平方 + 2 次乘法,对比笨算的 99 次乘法。
1.17 节的预告在此兑现。Fermat 检验:存在 a 使 an−1 ≢ 1 (mod n) ⟹ n 合数;反之通过者可能合数(伪素数),最顽固的 Carmichael 数 561 = 3 × 11 × 17 对一切互素的 a 都冒充通过。Miller–Rabin 的二次修正撕破伪装:
Miller–Rabin 检验(n − 1 = 2s·d,d 奇)
算 ad, (ad)2, (ad)4, …, (ad)2s−1 这条平方链。判定:若链中某项平方后突然出现 1 而前一项不是 ±1,或末项 ≠ 1,则 n 是合数。原理:mod 素数 p,x2 = 1 只有解 x = ±1(域!)——「1 的平方根只有两个」正是 2.12 节 Wilson 证明用过的同一个事实。合成数模里 1 的平方根可以更多,伪装在此露馅。
实战:561 在 a = 2 下现形
560 = 24 × 35。平方链(mod 561):235 ≡ 263 → 2632 ≡ 166 → 1662 ≡ 67 → 672 ≡ 1(4489 = 8×561 + 1 ✓)。末项是 1,但出现 1 之前的那一项是 67 ≠ ±1——平方链从 67 直接跳到 1,中间凭空多了「1 的平方根」,域的纪律被违反,561 合数铁案。
方法表:问题 → 工具 → 定理
| 问题 | 工具 | 定理编号 |
|---|---|---|
| 折叠后的加法乘法合法吗? | 等价关系 + 良定义 | 2.2.2 / 2.4.2 |
| 何时能除(消去)? | Bézout 逆元 | 单位群 2.5.1 / 消去律 2.8.1 |
| 联立同余怎么解? | 开关元合成 | CRT 2.10.1 / 求一术 2.11 |
| an−1 恒为 1 吗? | 项链轨道 / 缩系重排 | Fermat 2.13.1 / Euler 2.14.2 |
| φ(n) 怎么算? | 逐素数过滤 + CRT 积性 | 2.15.1 |
| 大指数怎么算? | Fermat 封顶 + 快速幂 | 2.16 |
| 如何不分解判素? | 平方链的域纪律 | Miller–Rabin 2.17 |
例 1 求 2024 mod 7;并用同余性质快速求 20242024 mod 7 的最后一步思路。
解 2024 = 7 × 289 + 1,故 2024 ≡ 1 (mod 7)。由乘法保真:20242024 ≡ 12024 ≡ 1 (mod 7)——影子是 1,多少次幂都是 1。
降模技巧:大数不必硬除,逐段降模:2024 = 2000 + 24 ≡ 2000 mod 7(2000 = 7×285 + 5 ≡ 5)+ 3 ≡ 5 + 3 = 8 ≡ 1 ✓。
「先降模再运算」是同余世界的通用省力法:任何时刻都可以把参与者换成自己的影子。
例 2 验证 {0, 1, 2, 3, 4}、{5, 6, 7, 8, 9}、{0, 1, 2, −2, −1} 都是 mod 5 的完全剩余系。
解 逐一取 mod 5 的影子:第一组 (0,1,2,3,4) 显然互异;第二组 (0,1,2,3,4) 同样互异;第三组 (0,1,2,3,4)——−2 ≡ 3、−1 ≡ 4。三组各占五只抽屉、每抽屉一人,都是完全剩余系。
判据:n 个整数构成 mod n 的完全剩余系 ⟺ 它们两两不同余 ⟺ 影子互不相同。线性变换:{a, a+b, a+2b, …, a+(n−1)b} 在 gcd(b, n) = 1 时也是完全剩余系(b 可逆,乘 b 是抽屉的重排)。
例 3 列出 (ℤ/12ℤ, +) 的全部子群,并核对 Lagrange 定理。
解 12 的因子 1, 2, 3, 4, 6, 12 各对应一个子群(循环群每阶恰一个,4.5 节证):{[0]};{[0],[6]};{[0],[4],[8]};{[0],[3],[6],[9]};{[0],[2],[4],[6],[8],[10]};全群。大小 1, 2, 3, 4, 6, 12——全部整除 12 ✓ Lagrange 对账。且每个子群恰好「一个阶一个」,没有私生的。
生成元观察:{[0],[4],[8]} = ⟨[4]⟩ = ⟨[8]⟩——同一子群可以有两个生成元(4 与 8 都是阶 3)。第四章将数清「每阶有多少个生成元素」。
例 4 写出 (ℤ/10ℤ)× 的元素与乘法表,指出每个元素的逆元与阶。
解 与 10 互素的剩余类:{[1], [3], [7], [9]}(φ(10) = 4)。乘法表见 2.5 节。逆元对:3−1 = 7(21 ≡ 1)、9−1 = 9(自逆)。阶:ord(1) = 1,ord(9) = 2,ord(3) = ord(7) = 4——3 与 7 都是生成元,(ℤ/10ℤ)× 是循环群。阶计数对账:每阶 d 的元素数 = φ(d):φ(1)=1(阶1: 1),φ(2)=1(阶2: 9),φ(4)=2(阶4: 3,7)✓——「阶的户口表」在第四章成建制。
例 5 判断下列消去是否合法,并给出结论:(a) 6×5 ≡ 6×3 (mod 12) 中消去 6?(b) 5×5 ≡ 5×3 (mod 10) 中消去 5?(c) 6×5 ≡ 6×3 (mod 12) 按定理 2.8.1 该怎么处理?
解 (a) gcd(6, 12) = 6 ≠ 1,直接消不合法——事实:5 ≡ 3? mod 12 不成立(5−3 = 2 不被 12 整除)。(b) gcd(5, 10) = 5 ≠ 1,不合法:5×5 = 25 ≡ 5,5×3 ≡ 3,25 ≢ 3?25 − 3 = 22 不被 10 整除——前提高假,本题无消去可言。(c) 正确处理:ab ≡ ac (mod 12) ⟹ b ≡ c (mod 12/6 = 2),即 mod 2 下可消——5 ≡ 3 ≡ 1 (mod 2) ✓。
消去的三字诀:查 gcd。互素直消;有公因数则降模再消。
例 6 用口诀「三人同行七十稀,五树梅花廿一支,七子团圆正半月」复算物不知数,并说明口诀与 CRT 的对应。
解 口诀账:2×70 + 3×21 + 2×15 = 140 + 63 + 30 = 233;「除百零五便得知」:233 − 2×105 = 23 ✓。
CRT 对应:70 = 2×35 且 70 ≡ 1 (mod 3)——是 m1 = 3 的开关元(用数);21 = 21 ≡ 1 (mod 5) 且含因子 3、7——m2 = 5 的开关元;15 = 3×5 ≡ 1 (mod 7)——m3 = 7 的开关元。余数 2、3、2 作权重,「除百零五」= mod 105 取最小正代表。程大位的口诀 = 秦九韶的用数 = 高斯的开关元:三套语言,一个定理。
例 7 用开关元法(2.10 节)从零解此联立,不复用口诀。
解 M = 105。求三个开关元:
① P1 = 35:35 ≡ 2 (mod 3),需求 u1 使 2u1 ≡ 1 (mod 3) → u1 = 2,P1u1 = 70 ≡ 1 (mod 3)、≡ 0 (mod 5, 7) ✓。
② P2 = 21:21 ≡ 1 (mod 5),u2 = 1,开关元 21 ✓。
③ P3 = 15:15 ≡ 1 (mod 7),u3 = 1,开关元 15 ✓。
合成:x = 2×70 + 3×21 + 2×15 = 233 ≡ 233 − 2×105 = 23 (mod 105)。
「求 u_i」就是大衍求一术的求乘率:k·P_i ≡ 1 (mod m_i)。当 P_i mod m_i ≠ 1 时(如本题的 35 mod 3 = 2),这一步才真正干活。
例 8 用大衍求一术求 63 mod 11 的乘率(即解 63k ≡ 1 (mod 11))。
解 奇数 P = 63 mod 11 = 8(63 = 5×11 + 8)。辗转相除求 8−1 (mod 11):11 = 1×8 + 3;8 = 2×3 + 2;3 = 1×2 + 1。回代:1 = 3 − 2 = 3 − (8 − 2×3) = 3×3 − 8 = 3×(11 − 8) − 8 = 3×11 − 4×8。故 8−1 ≡ −4 ≡ 7 (mod 11)。验证:63 × 7 = 441 = 40×11 + 1 ✓。乘率 k = 7。
秦九韶的「以奇模入之,辗转相减,得奇一而止」就是这条回代链——求一术 = 求逆元 = Bézout 的定向使用。辗转相除在这里完成了它在本书的第三次出场:求 gcd(1.8)、求 Bézout(1.7)、求逆元(本例)。
例 9 按舞会配对逐项验证 12! ≡ −1 (mod 13)。
解 12! = 1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 × 9 × 10 × 11 × 12。配对(每对乘积 ≡ 1):2×7 = 14 ≡ 1;3×9 = 27 ≡ 1;4×10 = 40 ≡ 1;5×8 = 40 ≡ 1;6×11 = 66 ≡ 1。剩下 1 与 12:1 × 12 = 12 ≡ −1。总积 ≡ −1 ✓。程序对账:12! = 479001600;479001600 = 36846276×13 + 12 → 余 12 ≡ −1 ✓。
顺手验反向:(p − 2)! = 11! ≡ 1 (mod 13)——约去 12(= −1 的逆还是 −1?不:除以 12 即乘 12−1 = 12,−1 × 12 = −12 ≡ 1)✓ 与预演算一致。
例 10 用快速幂全程演算 2100 mod 13(不用 Fermat 封顶)。
解 阶梯自乘(每步 mod 13):21 = 2;22 = 4;24 = 16 ≡ 3;28 ≡ 9;216 ≡ 81 ≡ 3;232 ≡ 9;264 ≡ 81 ≡ 3(mod 13 下平方链 3 ↔ 9 循环——因为 ord(2) = 12 | ? 见第四章)。100 = 64 + 32 + 4,点将相乘:2100 ≡ 3 × 9 × 3 = 81 ≡ 3 (mod 13) ✓ 与封顶法(24 ≡ 3)一致。
成本账:6 次平方 + 2 次乘法 vs 笨算 99 次乘法。RSA 的 1024 位指数同法:约 1536 次模乘,毫秒级。
例 11 计算 φ(360) 并验证 φ 的积性路径。
解 360 = 23 × 32 × 5。公式:φ = 360 × (1 − 1/2)(1 − 1/3)(1 − 1/5) = 360 × 1/2 × 2/3 × 4/5 = 96。
积性路径:φ(8) = 4,φ(9) = 6,φ(5) = 4;gcd(8,9) = gcd(72,5) = 1,故 φ(360) = φ(8×9×5) = 4×6×4 = 96 ✓ 两路同归。
意义:96 是 (ℤ/360ℤ)× 的大小——一秒钟有 60×60 = 3600 秒档……钟表世界里的可逆者有 96 个。
例 12 已知 2024 年 1 月 1 日是星期一,求 2024 年 9 月 27 日是星期几。
解 数天数:1–8 月共 31+29+31+30+31+30+31+31 = 244 天(2024 闰年,2 月 29 天),9 月 27 日是当年第 244 + 27 = 271 天。经过的天数 271 − 1 = 270 ≡ 270 − 38×7 = 270 − 266 = 4 (mod 7)。星期一 + 4 = 星期五。
数论点评:历法是 mod 算术的宏大的应用——星期即 mod 7、闰年规则即「每 4 年补 1、百年扣 1、四百年再补 1」的同余修正(Gregor 历的 400 年周期 = 146097 天恰被 7 整除,所以日历每 400 年整体复用)。高斯的 weekday 公式、Zeller 公式,全是 CRT 的变奏。
练 1.1 证明:a ≡ b (mod n) ⟺ n | (a − b) ⟺ a mod n = b mod n。三者互为化名。
定义直接读出第一条;第二条:a mod n = b mod n 意味着 a 与 b 落同一抽屉,差是 n 的整倍数。
练 1.2 用同余性质求 72024 mod 5。
7 ≡ 2 (mod 5);24 ≡ 16 ≡ 1(Fermat 或直接枚举 2 的幂循环 2,4,3,1 周期 4);2024 = 4×506 → 72024 ≡ (24)506 ≡ 1 (mod 5)。影子 1。
练 1.3 若 a ≡ b (mod n),则 gcd(a, n) = gcd(b, n)。证明并举例。
a − b = nk ⟹ a = b + nk:任何 c | n 时 c | a ⟺ c | b——与 n 的公因数集相同。例:2024 ≡ 1 (mod 7),gcd 都是 1。
练 2.1 证明:{0, b, 2b, …, (n−1)b} 是 mod n 的完全剩余系 ⟺ gcd(b, n) = 1。
⟸ b 可逆,乘 b 是抽屉置换;⟹ 若 d = gcd(b, n) > 1,则 0 与 (n/d)·b 同余(都 ≡ 0 抽屉?(n/d)b = n·(b/d) ≡ 0)——两人同抽屉,不是完全系。
练 2.2 从对称系取代表:写出 mod 12 的对称完全剩余系。
n 偶时取 {−5, −4, …, 4, 5}?12 = 2×6:对称系取 ±1…±5 加 0 或 6——通常取 {0, ±1, ±2, ±3, ±4, ±5, 6}:6 只出现一次(自对偶)。答案:{−5, −4, −3, −2, −1, 0, 1, 2, 3, 4, 5, 6}。
练 3.1 证明 ℤ/nℤ 的加法群中,[a] 的阶 = n / gcd(a, n)。
k[a] = [0] ⟺ n | ka ⟺ (n/g) | k(g = gcd(a, n))——最小正 k 是 n/g。例:[4] 在 ℤ/12 中阶 3(12/4 = 3)✓ 与例 3 子群 {0,4,8} 呼应。
练 3.2 ℤ/12 加法群中,阶为 6 的元素有几个?它们生成的子群相同吗?
阶 6 ⟺ gcd(a, 12) = 2 → a ∈ {2, 10},恰 φ(6) = 2 个。⟨[2]⟩ = ⟨[10]⟩ = {0,2,4,6,8,10}——同群不同名。第四章会问:乘法世界里的「同群异名」有几个?答案 φ(阶)。
练 4.1 写出 (ℤ/12ℤ)× 的全部元素,并列乘法表的核心行([5] 行与 [7] 行)。
与 12 互素:{[1], [5], [7], [11]}(φ(12) = 4)。[5] 行:5×5 = 25 ≡ 1、5×7 = 35 ≡ 11、5×11 = 55 ≡ 7 → [5] 行 = {5, 1, 11, 7}。[7] 行 = {7, 11, 1, 5}。四阶群且每非单位元阶 2 ——「Klein 四元群」的数论化身(对比 (ℤ/10)× 循环!同为 4 元却不同构)。
练 4.2 证明:n 为奇数时 [2] ∈ (ℤ/nℤ)×,并求 [2] 在 mod 15 下的逆元。
奇 ⟹ gcd(2, n) = 1。2−1 mod 15 = 8(16 ≡ 1)。
练 5.1 解 6x ≡ 9 (mod 15)。
g = gcd(6, 15) = 3 | 9 ✓。除以 3:2x ≡ 3 (mod 5);2−1 ≡ 3(2×3 = 6 ≡ 1)→ x ≡ 9 ≡ 4 (mod 5)。升回:x ≡ 4, 9, 14 (mod 15)——三个解 = g。
练 5.2 证明:ab ≡ 0 (mod n) 且 gcd(a, n) = 1 ⟹ b ≡ 0 (mod n)。这在 n 合数时为什么重要?
消去律①直接版;合成数模的零因子(如 mod 6 的 [2][3] = [0])正是因为因子不可逆才得以存在——「无零因子 ⟺ 每个非零可逆 ⟺ 域」(素数模)。
练 6.1 韩信点兵:士兵三三数剩 1、五五数剩 2、七七数剩 3,最少多少人?
x ≡ 1(3), 2(5), 3(7)。用开关元 70, 21, 15 加权合成:1×70 + 2×21 + 3×15 = 70 + 42 + 45 = 157,「除百零五」:157 − 105 = 52。验:52 = 3×17 + 1 ✓、52 = 5×10 + 2 ✓、52 = 7×7 + 3 ✓。答 52。
练 6.2 「今有数不知总,以五减之无余,以七减之无余,以九减之余一」——求最小。
x ≡ 0(5), 0(7), 1(9)。先并前两条:x ≡ 0 (mod 35)。x = 35k ≡ 1 (mod 9):35 ≡ 8 ≡ −1 → −k ≡ 1 → k ≡ −1 ≡ 8 (mod 9)。x = 35×8 = 280 ≡ 280 − 279 = 1 (mod 9)?280 − 31×9 = 280 − 279 = 1 ✓。答 280。
练 7.1 解 x ≡ 3 (mod 4),x ≡ 1 (mod 7),x ≡ 2 (mod 9)。
模两两互素,M = 252。逐步并:x = 3 + 4k ≡ 1 (mod 7) → 4k ≡ −2 ≡ 5 (mod 7);4−1 ≡ 2(8 ≡ 1)→ k ≡ 10 ≡ 3 (mod 7) → x ≡ 3 + 12 = 15 (mod 28)。并入第三条:x = 15 + 28t ≡ 2 (mod 9):15 ≡ 6、28 ≡ 1 → 6 + t ≡ 2 → t ≡ 5 (mod 9) → x = 15 + 140 = 155 (mod 252)。验:155 = 4×38+3 ✓、= 7×22+1 ✓、= 9×17+2 ✓。
练 7.2 x ≡ 2 (mod 6),x ≡ 4 (mod 8) 有解吗?用「影子相容性」说清原因。
两模不互素:需 mod 2 的影子一致:2 ≡ 0 (mod 2),4 ≡ 0 (mod 2) ✓ 相容。降为互素核心:mod 3 与 mod 8:x ≡ 2 (3)、x ≡ 4 (8)。x = 2 + 3k ≡ 4 (8) → 3k ≡ 2 (8) → k ≡ 6×3−1;3−1 mod 8 = 3(9 ≡ 1)→ k ≡ 6 (mod 8) → x = 20 (mod 24)。答 x ≡ 20 (mod 24)。教训:非互素模先查影子相容、再降模化素。
练 8.1 《数书九章》气题简化版:求乘率 k 使 38k ≡ 1 (mod 17)。
奇数 P = 38 mod 17 = 4。求 4−1 (mod 17):17 = 4×4 + 1 → 1 = 17 − 4×4 → k ≡ −4 ≡ 13。验:38×13 = 494 = 29×17 + 1 ✓。乘率 13。
练 8.2 用大衍总数术的完整流程解:x ≡ 1 (mod 4)、x ≡ 4 (mod 9)、x ≡ 3 (mod 25),列「衍数—奇数—乘率—用数」四行账。
M = 900。衍数:225, 100, 36;奇数:225 mod 4 = 1 → 乘率 1;100 mod 9 = 1 → 乘率 1;36 mod 25 = 11 → 求 11−1 (mod 25):11×16 = 176 = 7×25 + 1 → 乘率 16。用数:225, 100, 576。总数 = 1×225 + 4×100 + 3×576 = 225 + 400 + 1728 = 2353;满 900 去之:2353 − 1800 = 553。验:553 = 4×138+1 ✓ = 9×61+4 ✓ = 25×22+3 ✓。答 x ≡ 553 (mod 900)。
练 9.1 用配对法验证 10! ≡ −1 (mod 11)。
配对:2×6 = 12 ≡ 1;3×4 = 12 ≡ 1;5×9 = 45 ≡ 1;7×8 = 56 ≡ 1。剩 1 与 10:总积 ≡ 10 ≡ −1 ✓。程序对账:10! = 3628800 = 329891×11 − 1 ✓。
练 9.2 证明:p 奇素数时 (p − 3)! ≡ 1 (mod p)?——先算 (p−2)! ≡ 1,再除以 p−1(≡ −1)得 (p−3)! ≡ −1?独立推导 (p−3)! 的影子。
(p−2)! ≡ 1(Wilson 除以 −1 的逆即 −1:(p−2)! = (p−1)!/(p−1) ≡ (−1)×(−1) = 1)。(p−3)! = (p−2)!/(p−2) ≡ 1 × (p−2)−1;(p−2) ≡ −2 → 逆 ≡ −2−1;2−1 = (p+1)/2 → (p−3)! ≡ −(p+1)/2 (mod p)。验 p = 13:11! ≡ 1;10! ≡ −7 ≡ 6。程序对账:10! = 3628800 mod 13 = 6 ✓。
练 10.1 求 3302 mod 5 与 21000 mod 13。
3 mod 5:φ = 4,302 = 4×75 + 2 → 32 = 9 ≡ 4。2 mod 13:φ = 12,1000 = 12×83 + 4 → 24 = 16 ≡ 3。答 4 与 3。
练 10.2 用快速幂全程演算 5117 mod 11(列阶梯:51 → 52 → …)。
阶梯自乘(每步 mod 11):51 = 5;52 ≡ 3;54 ≡ 32 = 9;58 ≡ 81 ≡ 4;516 ≡ 16 ≡ 5;532 ≡ 25 ≡ 3;564 ≡ 9。117 = 64 + 32 + 16 + 4 + 1,点将相乘:9 × 3 × 5 × 9 × 5 → 9×3 = 27 ≡ 5;5×5 = 25 ≡ 3;3×9 = 27 ≡ 5;5×5 = 25 ≡ 3。答 3。复核(阶法):ord(5) = 5(5 → 3 → 4 → 9 → 1),117 ≡ 2 (mod 5) → 5117 ≡ 52 ≡ 3 ✓ 两法一致。
练 11.1 求 φ(2024) 与 φ(2025)。
2024 = 23×11×23:φ = 2024×(1/2)×(10/11)×(22/23) = 880。2025 = 34×52:φ = 2025×(2/3)×(4/5) = 1080。
练 11.2 证明:n > 2 时 φ(n) 为偶数。
若 n 有奇素因子 p:φ(pk) = pk−1(p−1) 含偶因子 p−1。若 n = 2k(k ≥ 2):φ = 2k−1 偶。n = 1, 2 是仅有的 φ 为奇者。
三问自测
第一问 · 定义关:「[a]·[b] 与代表元选取无关」依赖哪条定理?——定理 2.2.2 ③(乘法保真):良定义性的全部依据。
第二问 · 证明关:CRT 证明中开关元 P = nu 为什么「在 m 世界亮 1、在 n 世界亮 0」?Bézout 在哪一步进场?——u 取 n mod m 的逆元(gcd(n, m) = 1 保证存在)。
第三问 · 结构关:项链证明里「轨道大小只能是 1 或 p」用的是什么?合成数模下会出什么岔子?——Lagrange 定理(轨道大小整除 p);合成数模的轨道可以是真因子大小,p | ap − a 失效(反例:23 ≡ 0 ≢ 2 mod 4?23 = 8 ≡ 0 (mod 4),2 ≢ 0 ✓ 反例成立)。
错题归档表
| 错题 | 错因归类 | 对应讲义 | 重做日期 |
|---|---|---|---|
| 影子相容漏查 / 逆元算错 / 开关元配错权 / 快速幂阶梯未降模 | § | ||
| § |
本章必背证明三条:CRT(开关元合成)、Fermat 项链、Wilson 配对。第三章将把「域 F_p」请上台:有域在手,多项式方程的根数将有铁律。
从「物不知数」到「大衍求一术」,中间隔了近八百年——这条接力赛的每一棒都值得记录:
接力赛的四个棒次〔大衍〕
第一棒 · 《孙子算经》(约 4–5 世纪):提出物不知数,给出特例的解法与答案 23——但止步于「术」,没有一般方法。
第二棒 · 唐宋历算家:历法推算上元积年(从某个理想纪元到当年的天数)天然是联立同余——历法的需求把问题从趣题推向生产。一行、曹士蒍等历算家在实践中使用同余技巧。
第三棒 · 秦九韶《数书九章》(1247):大衍总数术横空出世——任意个模数(甚至不互素!先「化约」成互素定数)、求乘率的标准算法(求一术)、完整的合成流程。这是一套可执行的程序,比欧洲早五百余年。
第四棒 · 高斯《算术研究》(1801):以同余记号重述并证明一般定理(今称 CRT)——Euler 与 Lagrange 皆有前驱工作,高斯给出的是首个完整的一般性证明。东西方在此合流。
最令人感慨的是秦九韶的处境:《数书九章》成书于战乱流离之中(序言自述「际时狄患,历岁遥塞」),大衍术却处理着连欧洲要等高斯才严格化的一般情形——数学的火种,最怕的不是难,而是断。
本章的三颗定理珠子——Fermat、Euler、Wilson——在高斯的折叠世界里各自闪耀了两百年。而现代群论给它们装上了同一盏灯:
群论的统一账本
① Lagrange 定理(元素阶整除群阶)⟹ a 的阶 | φ(n) ⟹ aφ(n) ≡ 1——Euler 定理是 Lagrange 的一行推论,Fermat 是 p 素数时的特例;
② 配对(对合)论证:G 的元素与其逆元配对,落单者恰是自逆元——Wilson 的舞会就是单位群的 involutions 清点;
③ 轨道计数:群作用把集合切成等大轨道——项链证明里「轨道大小 1 或 p」的纪律,全部来自 Lagrange。
历史的次序值得咀嚼:先有定理(1640–1770),后有语言(群论,19 世纪)。Galois 与 Abel 的时代,这些同余事实正是抽象群概念的子宫——数论不是「应用」了群论,而是孕育了它。在第 2.6 节学的每一条群论,都是从这个章节数回去的历史反方向。
本章把第一章的余数从「下脚料」升格为「代数主角」:折叠合法(等价关系)→ 加法成群 → 可逆者结群 → 模素数成域 → 联立可解(CRT)→ 幂有周期(Fermat/Euler)→ 判素有门(MR)。
知识图谱(文字版)
结构层:同余 2.2 → 剩余类 2.3 → 加法群 2.4 → 单位群 2.5 → 环与域 2.7(素性 ⟺ 域)。
定理层:Lagrange 2.6(阶整除)→ 消去律 2.8 → CRT 2.10 ↔ 大衍求一术 2.11〔大衍〕→ Fermat 2.13 → Euler 2.14 → φ 公式 2.15。
出口层:快速幂 2.16 → Miller–Rabin 2.17〔密码〕→ RSA 地基(0.6 节兑现)。
必背证明三条(合书重写级)
| 定理 | 核心动作 | 页码 |
|---|---|---|
| 中国剩余定理 | 开关元 P、Q 合成 + 互素迫唯一 | 2.10 |
| Fermat 小定理 | 项链轨道:大小 1 或 p | 2.13 |
| Wilson 定理 | 逆元配对,落单者 ±1 | 2.12 |
两件兵器交给第三章:域 F_p(素性 ⟺ 域,消去律全通)与φ 函数与缩系(多项式求根的计数工具)。
ℤ/nℤ 是全体整数的「有限肖像」:细节尽失(无法从 [7] 读出 7),骨架犹存(加乘关系原样保留)。现代代数的核心动作——同构、商结构、模运算——全部始于这一步:敢把「不相等」的算作相等,只要这种「视而不见」有纪律。
同余的纪律由定理 2.2.2 立法:加乘可照搬,除法要审查。而 CRT 更进一步:一个折叠世界可以拆成几个更小的折叠世界的乘积——肖像可以分块保存。这正是「大」数算不动时「小」模并行干的活:RSA 的解密加速(中国剩余定理版 RSA)天天在用。
一语蔽之:折叠不是丢失,而是选择看清什么。
思想卡的边界同样重要:折叠丢掉了「大小」——5 与 105 在 mod 10 下同影,但 105 是 5 的 21 倍。凡涉及「多少倍」的问题(估值、单调性)不能只靠影子;数论的美妙恰恰在于:多少」的信息常常以出人意料的方式藏在影子的组合里——第五章的 Gauss 引理就是一次精彩的「影子计数还原真身」。
2.12 节给了配对证明的全文。本挑战换一条组合路——反方向跑项链账,把「素数 ⟺ 阶乘 ≡ −1」的等价性两头补齐:
步 1(逆元配对的组合表述) 把 (ℤ/pℤ)× 的逆元配对视为「 involutions 清点」:证明「自逆元素恰两个」等价于「x2 ≡ 1 (mod p) 恰两根 x = ±1」。提示:x2 − 1 = (x − 1)(x + 1),域中乘积为零 ⟺ 因子为零(域无零因子——2.7 节)。
步 2(连乘的组织) 把 (p − 1)! 的 12(一般 p − 1)个因子按「自逆者 | 其余对中」重新组织乘积,严格写出每对的乘积 ≡ 1 的理由(a·a−1 = 1 是定义还是定理?——定义:逆元的定义)。
步 3(合成方向:−1 ⟹ 素数) 设 n 合数且 (n − 1)! ≡ −1 (mod n),导出矛盾。分情况:n = ab,2 ≤ a < b < n 时 a 与 b 都出现在 (n−1)! 中 → n | (n−1)! → (n−1)! ≡ 0 ≠ −1;n = a2(a 素,n > 4)时 a 与 2a 都 ≤ n − 1 → a2 = n | (n−1)!。n = 4 手工验:3! = 6 ≡ 2 (mod 4) ≠ −1。
步 4(Gauss 的推广,选做) 证明:p ≡ 1 (mod 4) 时 ((p−1)/2)!2 ≡ −1 (mod p);p ≡ 3 (mod 4) 时 ≡ 1 (mod p)。提示:((p−1)/2)! ≡ ∏(QR)——每个 QR 都是两个 ±a 的平方,配对 (a, p−a)。
TheBook 评语:步 4 是第五章的伏笔——((p−1)/2)! 的影子由平方剩余决定,而 Gauss 引理将证明它 ≡ ±1,正负由 p mod 4 决定。此题做好,第五章开篇即高屋建瓴。
模不互素时 CRT 失效,但不是全失效——相容的联立仍有解。本挑战把边界走全:
步 1(相容条件) 证明:x ≡ a (mod m)、x ≡ b (mod n) 有解 ⟺ a ≡ b (mod gcd(m, n))。提示:有解时 a − b 被 m、n 整除故被 gcd 整除;反之用 Bézout:g = um + vn,构造 x = a + m·t,解 m·t ≡ b − a (mod n)。
步 2(解数) 相容时解在 mod lcm(m, n) 下唯一。验证:x ≡ 2 (mod 6)、x ≡ 4 (mod 8) 的解 x ≡ 20 (mod 24)(习题课七 7.2)。
步 3(一般定理) 陈述并对任意多个模证明:x ≡ a_i (mod m_i)(i = 1..k)有解 ⟺ 两两满足步 1 的相容条件;有解则 mod lcm(m1,…,m_k) 唯一。
步 4(秦九韶的「化约」) 秦九韶处理非互素模的办法是「化约」成互素定数:对 m1 = 4、m2 = 8 化约成 4 与 2?——不对,应保信息:验证 x ≡ a (mod 4)、x ≡ b (mod 8) 的信息恰等价于 x ≡ b (mod 8)(强条件吸收弱条件,当 4 | 8)。给出一般规则:m | n 时条件 (mod m) 可删当且仅当与 (mod n) 的影子相容。
TheBook 评语:现代教科书常略去非互素情形,但「相容条件 = gcd 整除影子差」恰是 CRT 的代数心脏——环同构 ℤ/mn ≅ ℤ/m × ℤ/n 的完整版是:像 = {影子对 : mod g 分量相等}。步 4 则是工程师的实际做法:合并条件、降低系统模数。
实验目标:把快速幂的「折半跳舞」画成时钟轨道——看指数的二进制如何决定轨迹,看 Fermat 周期如何把长舞变短舞。
def mpow_trace(a, n, p): # 快速幂 + 轨迹记录
r, a, trail = 1, a % p, [(1, a)]
while n:
if n & 1: r = r*a % p
a = a*a % p; n >>= 1
trail.append((r, a))
return trail
for step in mpow_trace(2, 100, 13):
print(step) # 观察平方链 2,4,3,9,3,9,3 与累乘链的「跳舞」观察任务:①平方列 2, 4, 3, 9, 3, 9, 3——从第三格起在 3 与 9 之间跳(24 = 3 → 32 = 9 → 92 = 3):周期 2 的「平方舞」;②把模换成 11、底换成 5,平方列 5, 3, 9, 4, 5, 3, …——周期 5(ord(5) = 5):舞曲长度 = 元素的阶;③猜想:平方舞的周期 = ord(a) 的 2-幂部分如何行为?记录观察,第四章 4.2 节将给出精确语言(阶)。
T1(10 分) 求 3100 的个位数字。
mod 10:3 的幂循环 3, 9, 7, 1 周期 4;100 ≡ 0 (mod 4) → 3100 ≡ 1。个位 1。
T2(14 分) 解 8x ≡ 12 (mod 28)。
g = 4 | 12 ✓。除以 4:2x ≡ 3 (mod 7);2−1 ≡ 4 → x ≡ 12 ≡ 5 (mod 7)。升回:x ≡ 5, 12, 19, 26 (mod 28)——四个解 = g。
T3(18 分) 用 CRT 判断 260 − 1 能被 63 整除吗?写出完整论证。
63 = 9 × 7。mod 9:26 = 64 ≡ 1 → 260 = (26)10 ≡ 1 → 260 − 1 ≡ 0 ✓。mod 7:23 = 8 ≡ 1 → 260 ≡ 1 ✓。两条影子都是 0,CRT 合成 → 63 | 260 − 1 ✓。
T4(18 分) 求最小的正整数 n 使 φ(n) = 10,并说明唯一性与否。
与第一章习题课九 9.1 同源:n = p9(512)或 p4q(最小 24×3 = 48)。答 48;不唯一(512 也行),但 48 最小。
T5(18 分) 用大衍求一术解:x ≡ 5 (mod 7),x ≡ 3 (mod 11)。列「衍数—奇数—乘率—用数—总数」五步账。
M = 77。衍数:11, 7;奇数:11 mod 7 = 4、7 mod 11 = 7;乘率:4−1 ≡ 2 (mod 7)(8 ≡ 1)、7−1 ≡ 8 (mod 11)(56 = 55+1);用数:22, 56。总数 = 5×22 + 3×56 = 110 + 168 = 278 ≡ 278 − 3×77 = 47 (mod 77)。验:47 = 7×6+5 ✓ = 11×4+3 ✓。答 47。
T6(22 分) 证明:p 素数、0 < k < p 时 C(p, k) ≡ 0 (mod p)。并由此解释 (1 + x)p ≡ 1 + xp (mod p)(第三章 Frobenius 的序曲)。
C(p,k) = p!/(k!(p−k)!):分子有因子 p,分母与 p 互素(p 素且各项 < p)→ p 整除商。二项式定理 mod p:中间项全消,只剩首尾。
评讲要点
T1–T2 查折叠基本功与消去纪律(解数 = g);T3 查 CRT 的「逐影子验证」用法——它是大数整除性判定的标准姿势;T4 查 φ 公式的组合面;T5 查求一术完整流程(古代算法的现代执行);T6 是第三章的桥——「素数的二项式性质」。总分 100,70 分以上进入第三章。
整数世界里,解方程是一件奢侈的事。3x = 2 没有整数解;x2 + y2 = 13 有没有整数解?要费一番功夫。但在有限世界——固定一个模数 n,把整数折到 {0, 1, …, n−1} 这个小小的圆环上——情况截然不同:候选解只有 n 个。原则上,逐个代入总能验个水落石出。
于是「解方程」这件事在有限世界里获得了新的生命。把等号换成同余号,我们问的是:
答案:x = 3 就命中了,因为 3·3 = 9 ≡ 2 (mod 7)。而在整数世界里,3x = 2 永远无解。同一个方程,两种世界,两种命运——这正是本章要系统研究的对象:同余方程。
最简单的非平凡同余方程是线性的:
按定义,x 是解当且仅当 n 整除 ax − b,即存在整数 y 使 ax − b = ny,整理为
左边是 a 与 n 的一个线性组合——第一章的 Bézout 恒等式立刻接管局面:a 与 n 的全部线性组合恰好是 gcd(a, n) 的全部倍数。于是判据一步到位:
证明 (⟹)若 x 是解,则 n | (ax − b),而 g | n 且 g | a,故 g | ax − b,特别地 g | b。(⟸)设 g | b。由 Bézout,存在 u, v 使 au + nv = g。两边乘 b/g:a·(ub/g) + n·(−vb/g) = b。于是 x0 = ub/g 满足 ax0 ≡ b (mod n)。∎
证明顺手送给我们一个构造性的解:x0 = u·(b/g),其中 u 是 au ≡ g (mod n) 的系数——这正是第二章「大衍求一术」计算乘率的那一步。求根问题与求逆问题在此会师:特别地,当 g = 1 时方程 ax ≡ b (mod n) 的唯一解就是 x ≡ a−1b,即「乘上 a 的逆元」。
存在性解决了,接下来数一数:有解时究竟有几个解?答案干净利落——恰好 g = gcd(a, n) 个,而且它们排成一条等差数列。
即模 n 意义下恰有 g 个互不相同的解。
证明 先验证这些的确是解:a(x0 + k·n/g) = ax0 + k·(a/g)·n ≡ ax0 ≡ b (mod n),因为 a/g 是整数,k·(a/g)·n 是 n 的倍数。再证不漏:设 ax ≡ ax0 (mod n),即 n | a(x − x0)。令 d = n/g,则 g | a,写 a = g·a′,于是 d·g | a′·g·(x − x0),约去 g 得 d | a′(x − x0)。由 gcd(a′, d) = 1(已把 a、n 的公因子全部约掉),消去律给出 d | x − x0,即 x = x0 + k·d。而模 n 而言 k 只给出 g 个不同余的值(k 与 k + g 相差 n)。∎
第二章我们用「大衍求一术」解过《孙子算经》的名题。现在把它写成标准定理,并看清代数骨架。
在模 M 意义下恰有一解:
其中 M_i = M/m_i,而 y_i 满足 M_iy_i ≡ 1 (mod m_i)(由两两互素,y_i 必存在——这正是 3.2 的特例 g = 1)。∎
证明思路(开关元) 构造 M_iy_i 这组「探针」:M_iy_i 在模 m_i 时等于 1,在模 m_j(j ≠ i)时含因子 M_i(被 m_j 整除)而等于 0。于是 Σ b_iM_iy_i 在模 m_i 时只剩下 b_i·1,其余项全部「熄灭」——每个方程各取所需,互不干扰。唯一性由「两解之差被每个 m_i 整除 ⟹ 被 M 整除」得到。
这个证明是组合式的:k 个「正交探针」张成一个坐标系,x 的各分量 b_i 可以独立调节——好比混音台上 k 个独立的推子。CRT 断言:两两互素时,模 M 的世界与直积 (ℤ/m1)×(ℤ/m2)×⋯ 完全等同(环同构,见札记②)。
线性只是一次多项式。本章真正的主角是一般的多项式同余方程:
例如 f(x) = x2 + 1,模 5 时逐个代入:02+1=1,12+1=2,22+1=5≡0 ✓,32+1=10≡0 ✓,42+1=17≡2。根为 x ≡ 2, 3 (mod 5)——注意 3 ≡ −2,两根关于 0 对称,这是「平方方程根成 ±对」的普遍现象。
模素数 p 做多项式,最幸福的一点是:域公理全部成立——加减乘畅通无阻,非零元都可除。这使我们在中学里学的多项式代数(因式定理、根的个数论)几乎原封不动地搬过来。但有一处天壤之别:根可能比次数多吗?中学代数说「n 次方程至多 n 个根」,那是实数世界的法律;在模合数的世界里它会破产(下一页的反例),而模素数时它依然屹立——这正是 Lagrange 定理。
把代数结构说清楚,定理才站得稳。三层台阶:
证明 n 素时,任一非零类 a(即 gcd(a, n) = 1)由 Bézout 给出逆元(第二章)。反之若 n = ab 为合数(1 < a, b < n),则类 a 非零,却对任何 x 都有 ax ≠ 1:否则 ab·x ≡ b,即 0 ≡ b (mod n),与 0 < b < n 矛盾。∎
域与环的分水岭是消去律:在域中,a ≠ 0 且 ab = ac 强制 b = c(两边乘 a−1);在一般环中可以失效——模 8 时 2·3 = 6 与 2·7 = 14 ≡ 6 相等,但 3 ≠ 7。第一章 3.3 证明里的「约分」动作,本质上就是在使用消去律;现在我们知道它的家:消去律住在域里。
现在是全章的中心定理。它之优美,在于用一条几乎「显然」的归纳,守住了中学代数最有用的经验法则。
取 F = F_p,立刻得到:模素数 p 时,n 次同余方程至多 n 个根。域是本质——离开域,定理当场破产:
证明只需要两块砖:因式定理与数学归纳。
引理(因式定理) F 是域,f(x) 是多项式,a ∈ F。则 f(a) = 0 ⟺ f(x) = (x − a)·q(x),其中 q 是低一次的多项式。
证明:用带余除法以 (x − a) 去除 f(在域上合法,因除数首项系数 1 可逆),得 f(x) = (x − a)q(x) + r,r 为常数。代入 x = a:f(a) = r。故 f(a) = 0 ⟺ r = 0。∎
定理的证明 对次数 n 归纳。n = 1 时 f(x) = ax + b(a ≠ 0),恰一根 x = −b/a。设结论对 n − 1 次成立。若 f(n 次)在 F 中没有根,结论显然。若有根 a,由因式定理 f(x) = (x − a)q(x),q 恰 n − 1 次。对任何根 b ≠ a:0 = f(b) = (b − a)q(b),而域中 b − a ≠ 0 可逆(且非零因子之积非零),故 q(b) = 0——b 是 q 的根。由归纳假设,q 至多 n − 1 个根,于是 f 至多 1 + (n − 1) = n 个根。∎
三处用到「域」:带余除法(首一除式总可做)、消去律(b − a 可逆)、非零因子之积非零。环里三处都会断裂——反例中 (x−1)(x+1) ≡ 0 (mod 8) 而 x = 3 使两因子 2 与 4 全非零。
Fermat 小定理说:p 素数、p ∤ a 时 ap−1 ≡ 1 (mod p)。翻译成多项式的语言:
而 f 的次数恰是 p − 1——根数顶满了次数!Lagrange 定理允许至多 p−1 个,Fermat 保证至少 p−1 个,于是:
即 f 的全部根恰好把它分解成一次因式之积,一个不多、一个不少。∎(严格说:两边都是 p−1 次多项式、首一,且都恰以 1,…,p−1 为全部根,其差至多 p−1 次却有 p−1 个根,由 Lagrange 只能是零多项式。)
「顶格」在数学里往往是财富的信号:取 x = 0 立得 Wilson 定理(3.10);比较两边的系数还能榨出更多秘密(3.11 的交错和、第四章原根的存在性)。一个多项式能被自己的根们瓜分殆尽,称其完全分裂(splits completely)——这是域上多项式最理想的形态。
完全分裂是一座富矿,先采第一桶:比较 xp−1 − 1 与 (x−1)(x−2)⋯(x−(p−1)) 的中间系数之前,先看看「根之和」。按 Vieta 定理(根之和 = −(xp−2 的系数)),而左边 xp−1 − 1 根本没有 xp−2 项——所以根之和必为 0:
(p 为奇素数时 (p−1)/2 是整数,故整个和是 p 的倍数;对 p = 13 验算:78 = 6·13 ✓。)同理根之平方和、立方和都是 0——左边那些系数位置全空着。这个「空位即零」的现象可以推广成漂亮的一般规律:
证明(群论一瞥) 取一个「生成元」——暂时承认存在 a 使 1, a, a2, …, ap−2 恰是 F_p 的全部非零元(第四章将证明原根存在)。则幂和 = ak(1 + ak + a2k + ⋯ + a(p−2)k),等比求和 = ak·(a(p−1)k − 1)/(ak − 1)。由 Fermat,a(p−1)k ≡ 1;由 k ≤ p−2 知 p−1 ∤ k,故 ak ≠ 1,分母非零可除。整个式子 ≡ 0。∎
第二章我们用「舞会配对」给过 Wilson 定理一个组合证明。完全分裂给出一条惊人的短路——一行代入:
定理与证明(Wilson,代数版) p 素数 ⟺ (p − 1)! ≡ −1 (mod p)。
(⟸ 即第二章配对证明,此处证 ⟹。)在恒等式 xp−1 − 1 ≡ (x−1)(x−2)⋯(x−(p−1)) (mod p) 中取 x = 0:左边 = −1;右边 = (−1)(−2)⋯(−(p−1)) = (−1)p−1(p−1)!。p 为奇素数时 (−1)p−1 = 1,立得 (p−1)! ≡ −1 (mod p)。∎
同一个定理,两条路:配对路线在乘法群里找各自的舞伴 a·a′ ≡ 1,落单的 1 与 p−1 相乘得 −1;多项式路线把 (p−1)! 认作完全分裂的常数项。一个用「群」,一个用「环」,在 −1 处会师——这正是现代数学的趣味:同一事实在不同结构下的两个化身。
有了理论,回到手艺。解高次同余方程的两把常用扳手:
费马晚年给友人的信里写下:奇素数 p 能写成两平方之和 p = a2 + b2 ⟺ p ≡ 1 (mod 4)。完整定理(含唯一性)在第五章之后才够得着;但它的同余侧影本章就能看清一半。
考虑同余方程 x2 + y2 ≡ 0 (mod p)。若存在解 (x, y) 且 p ∤ y,则 (xy−1)2 ≡ −1 (mod p):−1 在 F_p 中可开平方。反之,若 −1 有平方根 r,则 (r, 1) 就是解。于是:
而 −1 可开平方当且仅当 p ≡ 1 (mod 4)(配对论证:模 4 意义下平方只能取 0 或 1,故 (p−1)/2 为偶数时……完整两行证明留给习题课)。这解释了 3.5 的那张表:x2 + 1 ≡ 0 在模 5、模 13(皆 ≡ 1 (mod 4))下有两根,在模 3、模 7(皆 ≡ 3 (mod 4))下无根。数 p = 13 = 22 + 32 提供了活样本:22 + 32 = 13 ≡ 0 (mod 13),且 3·2−1 = 3·7 = 21 ≡ 8,而 82 = 64 ≡ −1 (mod 13) ✓。
多项式世界里最著名的恒等式非二项式定理莫属。模 p 之下它骤然变美:
证明 C(p, k) = p(p−1)⋯(p−k+1) / k!。分子是 p 的倍数;分母 k! 的每个因子都小于 p,故 p ∤ k!。分子里的 p 与分母互素,约分后 p 依然整除整个分数——即 C(p, k) 是 p 的倍数。∎
于是模 p 时中间的 C(p,1), …, C(p,p−1) 全部熄灭,二项式定理坍缩成两行:
这不是 p 的专利,而是一般规律(对任意 k)的特例:C(n, k) mod p 由 n 与 k 的 p 进制数字决定——这就是Lucas 定理(综合站挑战二给出组合证明)。先尝一口:C(10, 3) = 120 ≡ 1 (mod 7);而 10 = (13)7、3 = (03)7,按位组合 C(1,0)·C(3,3) = 1 ✓。数字对数字,逐位算,妙不可言。
把 3.14 的坍缩式 (1 + x)p ≡ 1 + xp 换一种读法:映射 σ : x ↦ xp 竟然保加法:
在整数世界这是彻头彻尾的错误((2+3)5 = 3125 ≠ 275 = 25 + 35);在模 5 的世界里它突然成立:75 ≡ 7·74 ≡ 7·1 = 2?等等,直接算:75 mod 5 = 25 mod 5 = 32 mod 5 = 2;而 35 + 45 mod 5 = 3 + 4 = 7 ≡ 2 ✓。坍缩式让中间系数集体归零,恒等式起死回生。
「保运算的映射」是现代代数的核心词汇:群里叫同态,环/域里叫同态或自同构。σ 在 F_p 内看起来无所作为(恒等),但在更大的域 Fp2、Fpn(第四章后会见到的「扩域」)里,σ 是货真价实的非平凡对称——现代数论(乃至椭圆曲线密码学)的机器上,Frobenius 是转得最勤的那颗齿轮。
现在把本章散落的观察收拢成一条定理——它是「根数」问题的完整答案,也是第四章指标法的地基。
① 方程 xd ≡ 1 (mod p) 恰有 g 个根。
② 方程 xd ≡ a (mod p) 有解 ⟺ a(p−1)/g ≡ 1 (mod p);有解时恰有 g 个根。∎(证明的完整版在第四章指标法处一气呵成,这里先验证它多么好用。)
对账(p = 13,p − 1 = 12):x3 ≡ 1 有 gcd(3, 12) = 3 个根 {1, 3, 9} ✓(3.12 的配方亲手算出)。x3 ≡ 2:判据要求 212/3 = 24 = 16 ≡ 3 ≢ 1,无解 ✓(枚举确认)。x3 ≡ 8:84 = 4096 = 315·13 + 1 ≡ 1,有解且恰 3 个——枚举给出 {2, 5, 6} ✓。x4 ≡ 2 (mod 11):gcd(4, 10) = 2,判据要 210/2 = 25 = 32 ≡ 10 ≢ 1 (mod 11),无解 ✓;x4 ≡ 3 (mod 11):35 = 243 ≡ 1 (mod 11),有解恰 2 个 {4, 7} ✓。
计算机需要「随机数」,但机器只会做确定性的算术。最老牌的方案是线性同余生成器(LCG):
——一个线性同余方程的迭代!本章的武器立刻能分析它。设计者最关心周期:序列迟早进入循环(抽屉原理,第二章),最好循环遍历全部 m 个状态(满周期)。Hull–Dobell 定理(1958)给出满周期的充要条件:
本章完成了从「算术」到「代数」的关键一跃:把同余世界升格为域 F_p,让中学多项式代数全面回归,再靠 Lagrange 定理守住「根不超过次数」的底线。
| 问题 | 答案 / 方法 | 背后的定理 |
|---|---|---|
| ax ≡ b (mod n) 有解吗? | g = gcd(a, n) 整除 b | Bézout + 存在性定理 |
| 有几个解? | 恰 g 个:x = x0 + k·(n/g) | 约去 g + 消去律 |
| 联立方程组呢? | 两两互素模 M 下唯一解(探针构造) | CRT 一般形式 |
| n 次方程最多几个根? | 至多 n 个(域上!) | Lagrange 多项式定理 |
| xp−1 − 1 的根? | 全部非零元——完全分裂 | Fermat + Lagrange |
| (p−1)! ≡ ? | ≡ −1(取 x = 0 读常数项) | Wilson,代数版 |
| xd ≡ a 有几个根? | gcd(d, p−1) 个(若可解) | 解数统计定理 |
| (1+x)p ≡ ? | ≡ 1 + xp | C(p,k) ≡ 0 → Frobenius |
题 解同余方程 4x ≡ 2 (mod 6)。
规范解答 按三步流程走:
第一步(判存在) g = gcd(4, 6) = 2,且 2 | 2 ✓,方程有解,解数恰为 2。
第二步(求特解) 用 Bézout 显式求 u:解 4u + 6v = 2,即 2u + 3v = 1,取 u = 2, v = −1(4·2 − 6 = 2 ✓)。按公式 x0 = u·(b/g) = 2·1 = 2。检验:4·2 = 8 ≡ 2 (mod 6) ✓。
第三步(写通解) x ≡ x0 + k·(n/g) = 2 + 3k (mod 6),k = 0, 1。故 x ≡ 2, 5 (mod 6)。
复核 4·5 = 20 = 3·6 + 2 ≡ 2 ✓。剩余四类 0, 1, 3, 4 代入:4·0=0, 4·1=4, 4·3=12≡0, 4·4=16≡4,均不为 2。恰 2 解,与判据「解数 = g = 2」完全一致。
题 判别下列方程解的情况并求解:(a) 4x ≡ 3 (mod 6);(b) 3x ≡ 2 (mod 7);(c) 4x ≡ 2 (mod 6)。
解 (a) g = gcd(4, 6) = 2,3 不被 2 整除——无解。理由具象化:4x 恒为偶数,8x−3… 更直接:4x ≡ 3 (6) 要求 6 | 4x − 3,而 4x − 3 是奇数,不可能被偶数 6 整除。左边的「公因子 2」锁死了右边。
(b) g = gcd(3, 7) = 1,g | 2 ✓,恰一解。3 的逆元 mod 7:3·5 = 15 ≡ 1,逆为 5。x ≡ 5·2 = 10 ≡ 3 (mod 7)。检验:3·3 = 9 ≡ 2 ✓。
(c) 即例 1:x ≡ 2, 5 (mod 6),恰两解。
| 方程 | g = gcd(a, n) | g | b ? | 解数 | 解 |
|---|---|---|---|---|
| 4x ≡ 3 (6) | 2 | 2 ∤ 3 | 0 | 无 |
| 3x ≡ 2 (7) | 1 | 1 | 2 | 1 | 3 |
| 4x ≡ 2 (6) | 2 | 2 | 2 | 2 | 2, 5 |
题 解方程组 x ≡ 2 (mod 6),x ≡ 5 (mod 9)。注意两个模不互素——CRT 的「两两互素」前提失效了,怎么办?
相容性检查 g = gcd(6, 9) = 3。判据:两余数必须模 g 相等。2 mod 3 = 2,5 mod 3 = 2 ✓,相容(若第二式是 x ≡ 4 (9),则 4 mod 3 = 1 ≠ 2,立判无解)。
求解 由第一式写通解 x = 2 + 6t,代入第二式:
这是线性方程,g = gcd(6, 9) = 3 | 3 ✓,恰 3 个解。约去 3:2t ≡ 1 (mod 3),t ≡ 2 (mod 3),即 t = 2 + 3s。代回:
复核 14 mod 6 = 2 ✓;14 mod 9 = 5 ✓。解在模 lcm(6, 9) = 18 意义下唯一——不互素时,「模 M 唯一」换成「模 lcm 唯一」,其余照旧。
题 求 x2 + 1 ≡ 0 (mod 5) 的全部解。
解 二次式,模 5 只有五个候选,逐一开列平方表:
| x | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| x2 | 0 | 1 | 4 | 9 ≡ 4 | 16 ≡ 1 |
| x2 + 1 | 1 | 2 | 0 | 0 | 2 |
根为 x ≡ 2, 3 (mod 5),恰两个,顶满二次的次数红线(Lagrange 允许至多 2)。
结构注记 3 ≡ −2 (mod 5):两根成 ± 对——x2 + 1 = 0 的根必然如此(若 r2 ≡ −1 则 (−r)2 ≡ −1,且 r ≢ −r 因 p ∤ 2r)。所以枚举其实只需查一半:找到 r = 2,对称根 −2 ≡ 3 自动奉上。
题 求 x3 − x ≡ 0 (mod 7) 的全部解,并用 Lagrange 定理解读。
解 先因式分解(在域上合法,就是中学代数):
域中乘积为零必须某个因子为零:x ≡ 0, 1, 6。恰 3 个解。
解读 三次方程、三个根——顶格但不算完全分裂:0 也是根,而完全分裂(3.9)特指 xp−1 − 1 型、根恰为全部非零元的情形。若把 0 的因式也收入,x3 − x 在 F_7 中同样被自己的根瓜分干净:x(x−1)(x−6)。Lagrange 定理的两重信息都在:根不越 3 条红线;真到 3 条时,分解必然发生。
题 在 F_7 中把 x6 − 1 分解为一次因式之积,并验证。
解 3.9 定理直接给出:
验证一(根) 每个非零元的六次幂都是 1(Fermat):如 26 = 64 = 63 + 1 ≡ 1 ✓,36 = 729 = 7·104 + 1 ≡ 1 ✓。六个根一个不缺。
验证二(系数) 右边展开的 x5 系数 = −(1+2+⋯+6) = −21 ≡ 0 (mod 7),与左边(无 x5 项)吻合;常数项 = (−1)6·6! = 720 = 7·102 + 6 ≡ 6 ≡ −1,与左边常数 −1 吻合——Wilson 定理 mod 7 顺手复核 ✓。
题 求 x3 ≡ 1 (mod 13) 的全部解。
预判 d = 3,g = gcd(3, 12) = 3,方程恰有 3 个根(3.16 定理①)。目标明确:找齐三个。
解 x3 − 1 = (x − 1)(x2 + x + 1)。x = 1 是显根。对二次因子配方(两边乘 4):
查平方表 mod 13:12=1, 22=4, 32=9, 42=3, 52=12, 62=36≡10 ✓。故 2x + 1 ≡ ±6,即 2x ≡ 5 或 2x ≡ −7 ≡ 6。乘 2 的逆(2·7 = 14 ≡ 1,逆为 7):
全部解 x ≡ 1, 3, 9 (mod 13)。复核:33 = 27 = 26 + 1 ≡ 1 ✓;93 = 729 = 13·56 + 1 ≡ 1 ✓。
题 在 F_7 中解 (a) x2 ≡ 2 (mod 7);(b) x2 ≡ 3 (mod 7)。
解 先建平方值总表(只需算到 3,其余由 ± 对称补齐):
| x | 0 | ±1 | ±2 | ±3 |
|---|---|---|---|---|
| x2 mod 7 | 0 | 1 | 4 | 2 |
(a) 2 在表中(来自 x = ±3),故 x ≡ 3, 4 (mod 7)。复核:32 = 9 ≡ 2 ✓,42 = 16 = 14 + 2 ≡ 2 ✓。
(b) 3 不在表中(平方值只能取 {0, 1, 2, 4}),故无解。七个候选逐一排除——枚举即完备证明。
失败启示 同一模数之下,有的 a 开得平方、有的开不得:{1, 2, 4} 是「二次剩余」(QR),{3, 5, 6} 是「非剩余」(QNR)。这不是技巧问题,而是 F_7 的结构性事实。三个问题自然涌出:如何不枚举就判定 a 是否 QR?QR 与 QNR 的分布有什么规律?不同素数之间有何关联?——这三问正是第五章的全部议程,互反律将在第三问处轰然登场。
题 求 C(10, 3) mod 7,并用 Lucas 定理的「逐位法」对账。
直算 C(10, 3) = 10·9·8 / 6 = 120,而 120 = 17·7 + 1,故 C(10, 3) ≡ 1 (mod 7)。
Lucas 对账 把 n 与 k 写成 7 进制:10 = 1·7 + 3 → (1, 3)7;3 = 0·7 + 3 → (0, 3)7。逐位取组合数再相乘:
再来一例(得 0 的情形) C(14, 5) = 2002 = 286·7,≡ 0 (mod 7)。逐位:14 = (2, 0)7,5 = (0, 5)7 → C(2, 0)·C(0, 5) = 1·0 = 0 ✓。个位上「5 里取 5」超出了 0 的容量——低位借不出东西,组合数当场清零。
题 在 F_5 中验证 (3 + 4)5 ≡ 35 + 45 (mod 5),并展示中间项的去向。
解 左边:3 + 4 = 7 ≡ 2,25 = 32 ≡ 2 (mod 5)。右边:35 ≡ 3、45 ≡ 4(Fermat),3 + 4 = 7 ≡ 2。两边同为 2 ✓。
中间项去向 按二项式定理完整展开:
五个中间系数 C(5,1) = 5, C(5,2) = 10, C(5,3) = 10, C(5,4) = 5,全是 5 的倍数——每一项都被模 5 吞掉:10·33·42 = 4320 = 864·5 ✓,10·32·43 = 5760 = 1152·5 ✓。中间项不是「约等于零」,是精确地为 5 的倍数。
换一组数再验 (2 + 3)5 = 55 ≡ 0 (mod 5);25 + 35 = 32 + 243 = 275 = 55·5 ≡ 0 ✓——连「和是模的倍数」这一退化情形都严丝合缝。
题 汇总本章出现过的二项方程,用判据统一对账。
| 方程 | g = gcd(d, p−1) | 判据 a(p−1)/g ≡ 1 ? | 理论解数 | 实际解 |
|---|---|---|---|---|
| x3 ≡ 1 (13) | gcd(3,12) = 3 | 112? 判据平凡(a=1)✓ | 3 | {1, 3, 9} |
| x3 ≡ 2 (13) | 3 | 24 = 16 ≡ 3 ≢ 1 ✗ | 0 | 无 |
| x3 ≡ 8 (13) | 3 | 84 = 4096 ≡ 1 ✓ | 3 | {2, 5, 6} |
| x4 ≡ 3 (11) | gcd(4,10) = 2 | 35 = 243 ≡ 1 ✓ | 2 | {4, 7} |
| x4 ≡ 2 (11) | 2 | 25 = 32 ≡ 10 ≢ 1 ✗ | 0 | 无 |
| x2 ≡ 3 (7) | gcd(2,6) = 2 | 33 = 27 ≡ 6 ≢ 1 ✗ | 0 | 无 |
| x2 ≡ 2 (7) | 2 | 23 = 8 ≡ 1 ✓ | 2 | {3, 4} |
读表 七行全部对上:「理论解数」一列由 gcd 与 Euler 型判据一锤定音,「实际解」由枚举或降次配方领出——无一例外。特别留意 x4 ≡ 3 (11) 复核:44 = 256 = 23·11 + 3 ✓,74 = 2401 = 218·11 + 3 ✓。
题 解 3x2 + 2x − 1 ≡ 0 (mod 11)。
第一步(定策略) 模 11 是素数,F_11 是域:配方合法、消去律成立、Lagrange 红线生效(至多 2 根)。
第二步(配方) 两边乘 3 的对偶数 12(即 4·3 = 12 ≡ 1,先乘 4·3 化首项为平方):更直接地按通式 (2ax + b)2 ≡ b2 − 4ac 配方:
第三步(开平方) 查平方表 mod 11:1, 4, 9, 16≡5, 25≡3 → 42 ≡ 5 ✓。故 6x + 2 ≡ ±4。
第四步(解线性方程) 6x ≡ 2 或 6x ≡ −6 ≡ 5。6 的逆:6·2 = 12 ≡ 1,逆为 2。x ≡ 2·2 = 4,或 x ≡ 5·2 = 10。
复核 x = 4:3·16 + 8 − 1 = 55 = 5·11 ✓。x = 10 ≡ −1:3 − 2 − 1 = 0 ✓(对称根藏得深:x = −1 竟是精确根,因 3·1 − 2 − 1 = 0 也整除——多项式恰有整根分解 (3x − 1)(x + 1))。两根 {4, 10},恰 2 个,顶格。
练 1.1 解 6x ≡ 3 (mod 9)。提示:g = gcd(6, 9) = 3,3 | 3 ✓,恰 3 解。约去 g:2x ≡ 1 (mod 3),x0 ≡ 2 (mod 3),通解 x = 2 + 3k。答案:x ≡ 2, 5, 8 (mod 9)。检验:6·5 = 30 = 3·9 + 3 ≡ 3 ✓。
练 1.2 解 10x ≡ 6 (mod 14)。提示:g = 2,约成 5x ≡ 3 (mod 7);5 的逆 mod 7 是 3(5·3 = 15 ≡ 1),x0 ≡ 3·3 = 9 ≡ 2 (mod 7),通解 x ≡ 2, 9 (mod 14)。检验:10·9 = 90 = 6·14 + 6 ✓。
练 1.3 判断有无解:7x ≡ 4 (mod 21)。提示:g = gcd(7, 21) = 7,7 ∤ 4 → 无解。换个看法:7x 是 7 的倍数,7x − 4 ≡ −4 (mod 7) 永不为 0,更不可能被 21 整除。
练 1.4 解 8x ≡ 12 (mod 28),并数一数解的个数与 gcd 的关系。提示:g = 4,12/4 = 3,约成 2x ≡ 3 (mod 7),x0 ≡ 3·4 = 12 ≡ 5 (mod 7)(2 的逆是 4),通解 x = 5 + 7k,模 28 得 x ≡ 5, 12, 19, 26,恰 g = 4 个解。
练 2.1 不解方程,只报解数:(a) 15x ≡ 10 (mod 25);(b) 12x ≡ 9 (mod 28);(c) 9x ≡ 12 (mod 15)。提示:(a) g = 5 | 10 → 5 解;(b) g = 4 ∤ 9 → 无解;(c) g = 3 | 12 → 3 解。判据先行,一望即答。
练 2.2 a 取何值时,ax ≡ 1 (mod 35) 恰有一解?提示:g = gcd(a, 35) = 1,即 a 与 35 = 5·7 互素:a 不是 5 的倍数也不是 7 的倍数。乘法群 (ℤ/35)× 有 φ(35) = 24 个成员,个个都可作为 a。
练 2.3 判断 2x ≡ 7 (mod 106) 的解的情况并说明理由。提示:g = gcd(2, 106) = 2,而 2 ∤ 7 —— 无解。最快看法:模 2 下左边 2x ≡ 0、右边 7 ≡ 1,当场矛盾。「数字大」不改变判据,gcd 才是一切。
练 3.1 判断相容性并求解:x ≡ 3 (mod 8),x ≡ 7 (mod 12)。提示:g = gcd(8, 12) = 4;3 mod 4 = 3,7 mod 4 = 3 ✓ 相容。x = 3 + 8t ≡ 7 (12):8t ≡ 4 (12),g = 4 | 4,约成 2t ≡ 1 (3),t ≡ 2 (3),x = 3 + 8·2 = 19,模 lcm(8,12) = 24 唯一。检验:19 mod 8 = 3 ✓,19 mod 12 = 7 ✓。
练 3.2 判断相容性:x ≡ 5 (mod 9),x ≡ 6 (mod 12)。提示:g = 3;5 mod 3 = 2,6 mod 3 = 0,不相等 → 无解。不互素联立的第一步永远是这道「模 gcd 比对」的快检。
练 3.3 一个数除以 6 余 4,除以 10 余 8,除以 15 余 13,求最小的它。提示:三对模的 gcd:gcd(6,10) = 2,4 ≡ 8 ≡ 0 (2) ✓;gcd(6,15) = 3,4 ≡ 13 ≡ 1 (3) ✓;gcd(10,15) = 5,8 ≡ 13 ≡ 3 (5) ✓。相容!注意三式都是「余数比模少 2」:x + 2 同时被 6, 10, 15 整除,即 30 | x + 2,最小正解 x = 28。验算:28 = 4·6 + 4 ✓ = 2·10 + 8 ✓ = 15 + 13 ✓。「不整齐的余数」背后是「整齐的 x + 2」——观察结构胜过套公式。
练 4.1 求 x2 ≡ 1 (mod 8) 的全部解,并解释为什么 Lagrange 定理「管不着」它。提示:奇数平方 ≡ 1 (mod 8),四解 {1, 3, 5, 7}。二次方程四根——因为 ℤ/8ℤ 不是域,红线只在域内生效。
练 4.2 求 x2 + x + 1 ≡ 0 (mod 7) 的全部解。提示:配方 (2x + 1)2 ≡ −3 ≡ 4 (7),±2 → 2x ≡ 1 或 2x ≡ −3 ≡ 4 → x ≡ 4 或 2。两解 {2, 4}。顶格。
练 4.3 求 x3 − 1 ≡ 0 (mod 7) 的全部解。提示:x3 − 1 = (x − 1)(x2 + x + 1);由练 4.2(把 7 换成 7)二次因子在 mod 7 有两根 2, 4。三解 {1, 2, 4}。对账:gcd(3, 6) = 3 ✓ 恰三根。
练 4.4 f(x) = x2 + 3x + 2 在 F_5 中有几个根?在 ℤ/6ℤ 中呢?提示:F_5:f = (x + 1)(x + 2),根 {3, 4}(−1 ≡ 4, −2 ≡ 3),恰两根。ℤ/6ℤ:逐个验 x = 0..5:0→2, 1→6≡0 ✓, 2→12≡0 ✓, 3→20≡2, 4→30≡0 ✓, 5→42≡0 ✓——四根 {1, 2, 4, 5}!非零因子(2·3 ≡ 0)让 (x+1)(x+2) ≡ 0 不再强制单因子为零。
练 5.1 F_11 上 x4 + 5x2 + 4 有几个根?先推理再验证。提示:x4 + 5x2 + 4 = (x2 + 1)(x2 + 4)。F_11 中 −1 是 QR 吗?平方表 mod 11:{1, 4, 9, 5, 3}——无 10,−1 非 QR,x2 + 1 无根。−4 ≡ 7 是 QR?表中无 7,x2 + 4 无根。故 0 个根。四次方程零根,Lagrange 只给上界不给下界。
练 5.2 证明:F_p 上 n 次多项式若有多于 n 个根,则它必是零多项式(所有系数 ≡ 0)。提示:这正是 3.9 完全分裂证明里用过的推理——f − g 至多 n 个根,除非恒为零。反证即得。
练 5.3 F_7 上是否存在二次多项式恰好有 1 个根?举一例。提示:x2 ≡ 0 只有根 x = 0(域中 x2 = 0 ⟹ x = 0),恰一根——重根只算一个根。另一例:(x − 1)2 = x2 − 2x + 1,根仅 x = 1。「根计重不记重」时恰一根完全可能。
练 6.1 在 F_5 中展开 (x − 1)(x − 2)(x − 3)(x − 4),验证它 ≡ x4 − 1 (mod 5)。提示:逐系数对账:x3 系数 −(1+2+3+4) = −10 ≡ 0 ✓;x2 系数 = 两两乘积和 = 35 ≡ 0 ✓(35 = 5·7);x 系数 = 三三乘积和 = 50 ≡ 0 ✓;常数 (−1)4·4! = 24 ≡ −1 ✓(Wilson mod 5)。
练 6.2 计算 1·2·3·⋯·6 mod 7 与 1·2·⋯·10 mod 11,用两种方法。提示:法一(Wilson):6! ≡ −1 ≡ 6 (7);10! ≡ −1 ≡ 10 (11)。法二(硬乘):720 ≡ 6 (7) ✓;3628800 = 329891·11 − 1 ≡ 10 (11) ✓。
练 6.3 p = 2 时 Wilson 定理还成立吗?xp−1 − 1 的完全分裂呢?提示:1! = 1 ≡ −1 ≡ 1 (2) ✓ 成立。x1 − 1 = x − 1 ≡ x − 1,根集 {1}(F_2 的唯一非零元),完全分裂同样成立——只是「非零元」只剩一个,故事缩短了。
练 7.1 解 x3 ≡ 8 (mod 13)。提示:x3 − 8 = (x − 2)(x2 + 2x + 4)。试出根 x = 2。配方:(2x + 2)2 ≡ 4 − 16 = −12 ≡ 1 (13),2x + 2 ≡ ±1 → x ≡ −1·7 = −7 ≡ 6 或 x ≡ −3·7 = −21 ≡ 5。三解 {2, 5, 6},与例 11 对账表一致 ✓(判据 gcd(3,12) = 3)。
练 7.2 解 x2 − 4x + 1 ≡ 0 (mod 11)。提示:配方 (2x − 4)2 ≡ 16 − 4 = 12 ≡ 1,2x − 4 ≡ ±1 → x ≡ 5·6 = 30 ≡ 8 或 x ≡ 3·6 = 18 ≡ 7(6 是 2 的逆 mod 11)。检验:64 − 32 + 1 = 33 = 3·11 ✓;49 − 28 + 1 = 22 ✓。
练 7.3 解 x2 + x ≡ 4 (mod 9)。这里模是合数,配方还灵吗?提示:4(x2 + x) ≡ 16,(2x + 1)2 ≡ 17 ≡ 8 (9)。逐一检查平方 mod 9:{0, 1, 4, 7}——8 不在其中,无解。配方在合数模下仍可尝试(乘 4 的可逆性没问题:gcd(4, 9) = 1),但「开平方」的枚举账本要按合数模自己的平方表来。谨慎:配方步骤合法 ⟺ 所乘的系数与模互素。
练 8.1 求 C(7, 2) mod 7 与 C(7, 3) mod 7,并用 3.14 命题解释。提示:C(7,2) = 21 ≡ 0;C(7,3) = 35 ≡ 0。中间系数全部熄灭——素数模的标志。
练 8.2 用 Lucas 逐位法求 C(16, 4) mod 7。提示:16 = (2, 2)7,4 = (0, 4)7 → C(2,0)·C(2,4) = 1·0 = 0。直算验证:C(16,4) = 1820 = 260·7 ✓。
练 8.3 用 Lucas 逐位法求 C(21, 7) mod 7,再用直接计算复核。提示:21 = (3, 0)7,7 = (1, 0)7 → C(3,1)·C(0,0) = 3。直算:C(21,7) = 116280 = 16611·7 + 3 ✓。
练 8.4 (1 + x)6 在 F_3 中的展开式是什么?提示:先按二项式定理写出系数 1, 6, 15, 20, 15, 6, 1,模 3 得 1, 0, 0, 2, 0, 0, 1 → (1 + x)6 ≡ 1 + 2x3 + x6 = (1 + x3)2 (mod 3)。这正是一般规律 (1+x)ab ≡ (1+xa)b 的特例——Lucas 定理的多项式面孔。
练 9.1 在 F_7 中验证 (5 + 4)7 ≡ 57 + 47 (mod 7)。提示:两边都 ≡ 5 + 4 = 9 ≡ 2(Fermat:a7 ≡ a)。左边硬算亦可:(9)7 = 9·(96) ≡ 9·1 = 2 (7) ✓。
练 9.2 证明:σ(x) = xp 保持「减法」,即 (x − y)p ≡ xp − yp (mod p)。提示:σ(x − y) = σ(x + (−y)) = σ(x) + σ(−y) = σ(x) + (−y)p = xp − yp(p 奇时 (−y)p = −yp;p = 2 时 −1 ≡ 1 依然成立)。
练 9.3 F_5 中解方程 x5 = x 的全部解。提示:x5 − x = x(x4 − 1) = x(x − 1)(x + 1)(x2 + 1)。F_5 中 x2 + 1 的根是 ±2(例 4),故解为全部五个元素 {0, 1, 2, 3, 4}——Frobenius 的不动点恰是整个域,这正是 3.15 的「σ = 恒等」。
练 10.1 不解方程,报出解数:(a) x5 ≡ 1 (mod 11);(b) x5 ≡ 1 (mod 31);(c) x6 ≡ 1 (mod 13)。提示:(a) gcd(5, 10) = 5 → 5 解;(b) gcd(5, 30) = 5 → 5 解;(c) gcd(6, 12) = 6 → 6 解。三个「5 次单位根」「6 次单位根」的群——第四章将给它们正式的名字。
练 10.2 p = 17 时,x4 ≡ a (mod 17) 对多少个 a(1 ≤ a ≤ 16)有解?提示:g = gcd(4, 16) = 4。幂映射 x ↦ x4 把 16 个非零元压成 16/4 = 4 个像点,每个像点上方 4 层——恰有 4 个 a 有解,每个恰 4 个根。有解判据:a4 ≡ 1 (17)。
练 10.3 x4 ≡ 3 (mod 17) 有解吗?再找出 F_17 中所有「四次幂像点」a(即存在 x 使 a = x4)。提示:判据 34 = 81 = 4·17 + 13 ≡ 13 ≢ 1 (17),不过关 → x4 ≡ 3 无解。像点:由练 10.2 知共 4 个,逐个验证 a4 ≡ 1:14 = 1 ✓,44 = 256 = 15·17 + 1 ✓,134 ≡ (−4)4 = 44 ≡ 1 ✓,164 ≡ (−1)4 = 1 ✓(其余 a4 ≢ 1,可抽查 24 = 16 ≢ 1)。像点集 = {±1, ±4}。
练 11.1(线性 + 联立) 解方程组 2x ≡ 4 (mod 6),5x ≡ 3 (mod 8)。提示:第一式 g = 2 | 4,约成 x ≡ 2 (3);第二式 g = 1,5 的逆 mod 8 是 5,x ≡ 15 ≡ 7 (8)。联立(互素模):x ≡ 2 (3) 且 x ≡ 7 (8)。x = 2 + 3t ≡ 7 (8):3t ≡ 5,t ≡ 5·3 = 15 ≡ 7 (8)(3 的逆是 3),x = 2 + 21 = 23,模 24 唯一。检验:2·23 = 46 = 7·6 + 4 ✓;5·23 = 115 = 14·8 + 3 ✓;23 mod 3 = 2 ✓、23 mod 8 = 7 ✓。
练 11.2(多项式 + 判据) F_13 中 x6 ≡ 1 的六个根恰为 QR 集 {1, 3, 4, 9, 10, 12}——验证并解释。提示:逐个平方:12=1, 32=9, 42=16≡3, 92=81≡3? —— 81 = 6·13 + 3 ≡ 3?不对,92 = 81 ≡ 3,再平方 32 = 9:94 ≡ 9?慢。x6 = (x2)3:QR 的三次方?更直接:逐个算 x6:16=1 ✓;36 = 729 = 56·13 + 1 ✓;46 = 4096 = 315·13 + 1 ✓;96 = (92)3 = 33 = 27 ≡ 1 ✓;106 = (102)3 = 93 = 729 ≡ 1 ✓;126 = (−1)6 = 1 ✓。六个 QR 全部通过。解释:p = 13 时 x6 = x(p−1)/2,而第五章的 Euler 判据将证明这个量恒为 ±1,且「取 +1」恰好刻画二次剩余——于是 x6 ≡ 1 的解集(六次单位根群)与 QR 集天然重合。这里先把巧合验到手,判据的证明留给第五章。
练 11.3(LCG 逆向) 某 LCG 满足 xn+1 = a·x_n + c (mod 16),已知三个连续输出 3, 11, 7,问这样的 (a, c) 存在吗?提示:列方程 3a + c ≡ 11、11a + c ≡ 7 (16),相减得 8a ≡ −4 ≡ 12 (16)。判据:g = gcd(8, 16) = 8 ∤ 12,无解——三个数不可能出自任何 LCG(16)。这正演示了 LCG 的可验伪性:输出满足刚性线性约束,乱造的数骗不过它。
高频错点归档(本章练习中最容易失手的三处):
| 错点 | 典型症状 | 纠正钥匙 |
|---|---|---|
| gcd 算错或没算 | 把 2x ≡ 7 (106) 当成有唯一解 | 判据只有一条:g | b;先算 g 再说话 |
| 把环当域用 | 在 ℤ/8ℤ 里用「至多两根」 | Lagrange 红线只挂在域门口 |
| 配方乘的系数不可逆 | 模 9 时随手除以 2 | 每一步除法前查 gcd(除数, 模) |
三问自测(合上书回答):
一问:4x ≡ 2 (mod 6) 为什么恰有两个解?说出定理名与证明的关键一步。提示:解数定理(3.3);关键:两解之差被 n/g 整除——约去 g 后用消去律。
二问:Wilson 定理的组合证明与代数证明各用了什么结构?提示:乘法群 F_p^× 的配对(群)与 xp−1 − 1 的完全分裂(域上多项式环)。
三问:为什么 xd ≡ 1 (mod p) 的根数恰好是 gcd(d, p − 1)?提示:完整答案在第四章指标法;本章层面可答「幂映射的分层结构」:d 次幂的像点是 (p−1)/g 个,每个上方 g 层。
《数书九章》(1247)少广章中,秦九韶给出高次方程数值解的完整算法——「正负开方术」:反复通过「随乘随加」逐位逼近方程的根。这与西方 1819 年 Horner 发表的方法在算法结构上完全一致,早了近六百年。其核心引擎,就是今天计算机里求多项式值的秦九韶算法(嵌套乘法):
从最内层括号起步,每一步只做「乘 x、加下一系数」:四次乘法、四次加法搞定四次多项式——比逐项展开经济得多。以 x = 2 为例:3 → 3·2+2 = 8 → 8·2−1 = 15 → 15·2+0 = 30 → 30·2+5 = 65。验算:3·16 + 2·8 − 4 + 5 = 65 ✓。
三章读罢,是时候把 F_p 的「户口档案」整理成一张画像。它有两副面孔:
两副面孔合起来,Fermat、Euler、Wilson、Lagrange(多项式版)四个定理各归其位:
| 定理 | 居住地 | 一句话本质 |
|---|---|---|
| Fermat ap−1 ≡ 1 | 乘法群 F_p^× | 元素阶整除群阶(p − 1) |
| Wilson (p−1)! ≡ −1 | F_p^× 的自逆配对 | 自逆元只有 ±1,落单者相乘 |
| Lagrange(多项式) | 域公理(消去律) | n 次至多 n 根,因式定理 + 归纳 |
| CRT | 环同构 ℤ/mn ≅ ℤ/m × ℤ/n | 互素模的世界互不干扰 |
本章是全书的「代数枢纽」:把前两章的群与环升格为域,让多项式代数全面回归,再以 Lagrange 定理为核心收割了一系列定理。知识图谱如下:
三条延伸,各通向一个更大的世界:
其一(唯一性):次数 ≤ n 的多项式由 n + 1 个点唯一决定——Lagrange 插值公式。这把「多项式」变成了「点值的另一种编码」,密码学里的 Shamir 秘密分享正建于此。
其二(计数):xd ≡ 1 至多 gcd(d, p−1) 个根的精确版告诉我们:有限域上的「单位根群」规模有限、结构规整——这是第四章循环群解剖的入口。
其三(不可能性):次数红线是「不可能证明」的万用模具:想证明某个方程无解?证出根数超线即可(如练 4.1 的 mod 8 四根反例堵死了「域化推广」)。负结果同样有形状。
任务 不看 3.8,独立完成四步证明。每步附自查点,闯关式推进。
第一步(带余除法) 证明:域 F 上,f(x) 除以 g(x)(g 首项系数 c ≠ 0)可得 f = gq + r,且 r = 0 或次数低于 g。自查:对 f 的次数归纳;除法每步用 c 的逆元——域在哪里出场?答:c 可逆。
第二步(因式定理) 推出 f(a) = 0 ⟺ (x − a) | f(x)。自查:取 g = x − a,余式 r 是常数且 r = f(a)。为什么 g 首项系数是 1?——所以除法永远合法。
第三步(归纳主体) 设 n 次多项式至多 n − 1 个根(归纳假设),证 n 次至多 n 个。自查:找到根 a 后,任何其他根 b 为什么自动是 q(x) = f(x)/(x − a) 的根?关键等式 0 = f(b) = (b − a)q(b) 中,「b − a ≠ 0 可逆」与「非零之积非零」都是域公理——在 ℤ/8ℤ 里指出这两个环节各自断裂的位置。
第四步(反例校准) 用 x2 − 1 ≡ 0 (mod 8) 的四根 {1, 3, 5, 7} 逐条对照:哪一步在 ℤ/8ℤ 里失效?自查:b = 3 时 (b − 1) = 2 非零但不可逆;2·4 ≡ 0 是两个非零元之积为零。红线只在域内成立。
目标定理 n = ap + r,k = bp + s(0 ≤ r, s ≤ p − 1),则 C(n, k) ≡ C(a, b)·C(r, s) (mod p)。
第一步(坍缩式升级) 由 (1 + x)p ≡ 1 + xp (mod p),反复使用得 ((1 + x)p)a ≡ (1 + xp)a,故
第二步(比对系数) 右边展开:(1 + xp)a 贡献 xbp 的系数 C(a, b) 乘 (1 + x)r 中 xs 的系数 C(r, s)——因为 xk = xbp + s 只能拆成「p 的倍数部分 + 余数部分」,而 (1+x)r 的次数不足 p,两部分独立。自查:为什么没有其他组合贡献 xk?——若 (1+xp)a 取 x(b+1)p 次幂,则 (1+x)r 需提供负次数,不可能;次数重叠的情形同理排除。
第三步(读出结论) 左边 xk 的系数是 C(n, k),右边是 C(a, b)C(r, s),两边 mod p 相等,Lucas 定理到手。
对账三连:C(10, 3) mod 7 = C(1,0)·C(3,3) = 1(例 9)✓;C(14, 5) mod 7 = C(2,0)·C(0,5) = 0 ✓;C(21, 7) mod 7 = C(3,1)·C(0,0) = 3(练 8.3)✓。
实验设计 把 LCG 的输出对 (x_n, xn+1) 画成平面点阵:满周期的 LCG 应在 16×16 网格上盖出整齐的平行线族——「随机」的外表下藏着笔直的骨骼。本章以 m = 16 为例做手工版:
T1(存在与个数) 不解方程,判断下列各有几解:(a) 6x ≡ 4 (mod 10);(b) 5x ≡ 12 (mod 18)。评讲:(a) g = 2 | 4 → 2 解;(b) g = 1 → 1 解。查的是 3.2/3.3 的判据条件反射。
T2(通解公式) 写出 6x ≡ 4 (mod 10) 的全部解。评讲:约成 3x ≡ 2 (5),x0 ≡ 2·2 = 4 (5),通解 x ≡ 4, 9 (10)。错得最多的是漏解或写进模 5。
T3(CRT 对账) x ≡ 1 (4) 且 x ≡ 3 (9),求 x mod 36。评讲:x = 1 + 4t ≡ 3 (9) → 4t ≡ 2 → t ≡ 2·7 = 14 ≡ 5 (9),x = 21。检验:21 mod 4 = 1 ✓,21 mod 9 = 3 ✓。探针法亦可:M1y1 = 9·9−1(4)?M1 = 9,9y ≡ 1 (4) → y ≡ 1,探针 9;M2 = 4,4y ≡ 1 (9) → y ≡ 7,探针 28;x = 1·9 + 3·28 = 93 ≡ 21 (36) ✓。
T4(Lagrange) F_11 中 x4 − 3x2 + 2 有几个根?评讲:因式分解 (x2 − 1)(x2 − 2)。x2 = 1 → x = ±1 = {1, 10};x2 = 2:平方表 mod 11 为 {1, 3, 4, 5, 9},2 不在 → 无根。共 2 根,未顶格。
T5(完全分裂 + Lucas) 求 C(22, 6) mod 11,并说明用了哪条定理。评讲:22 = (2, 0)11,6 = (0, 6)11 → C(2,0)·C(0,6) = 1·0 = 0(Lucas)。机理追问:为什么低位是 0 就整体清零?——(1+x)r 部分(r = 0)提供不出 x6。
T6(结构题) 举出一个「三次方程五根」的同余方程,并解释它不违反任何已证定理。评讲:x3 ≡ x (mod 6)(例 5 的换模快照)有六根,或 x3 ≡ x (mod 6) 的任一变形。不违反:6 非素数,ℤ/6ℤ 不是域,Lagrange 红线不适用——域假设是定理的岗位说明书。
第二章末尾我们认识了乘法群 F_p^× = {1, 2, …, p−1}(模 p 乘法);第三章末尾的幂映射分层图留下了悬念:x ↦ x4 在 F_17 上是「4 层楼」,x ↦ x3 在 F_13 上是「3 层楼」。楼层多寡不一——那么,谁的幂能走遍整座楼?
十二个不同的值——2 的幂恰好铺满全部非零元!这样的元素叫原根(primitive root):它是整座乘法群的「一主齿轮」,转一圈把所有齿轮位都带到。本章的两大主角由此登场:证明原根总存在(Gauss 的成名作之一),并利用它建立指标(离散对数)——把乘法翻译成加法的对数表。
阶为什么存在?Fermat 小定理担保 ap−1 ≡ 1,候选集非空,正整数集中取最小——又是良序原理的手笔。阶的三条基本性质:
证明 ① 带余除法 k = qn + r(0 ≤ r < n):ak = (an)q·ar ≡ ar。故 ak ≡ 1 ⟺ ar ≡ 1;由 n 的最小性 r = 0,即 n | k。② 若 ai ≡ aj(0 ≤ i < j < n),则 aj−i ≡ 1 且 0 < j − i < n,与最小性矛盾。③ 记 m = ord(ak)。由 (ak)n = (an)k ≡ 1 知 m | n(用 ①)。又 (ak)n/g = ak·n/g = (an)k/g ≡ 1(g = gcd(n, k) 整除 k),故 m ≤ n/g。反过来 akm ≡ 1 给 n | km,而 gcd(m, n) | m | km 且 gcd(m, n) | n,于是 n | gcd(m,n)·(km/gcd) …简明路线:n | km ⟺ (n/g) | (k/g)m,而 gcd(n/g, k/g) = 1,消去律给 (n/g) | m。两端夹住,m = n/g。∎
把上一页的「判阶神器」整理成完整流程。给定 F_p 中元素 a(p 素数,p ∤ a):
三步法的代价约为 O(log n) 次模幂——比逐个穷举 12 个幂快得多。它还揭示一个隐秘的对称:阶的判定全部发生在「n 的因子」层面上。这为 4.6 的群版 Lagrange(阶必整除 p − 1)做了数值铺垫。
F_13^× 是循环群:⟨2⟩,因为 2 的幂铺满十二个非零元。循环群是结构最透明的群——整个群由一个元素复制而来,所有的元素都排成一条确定的环游路线。群论里证明「某群循环」是高奖赏动作:一旦成立,计数、子群、方程全都有现成答案。
举例:F_13^× = ⟨2⟩ 的生成元是 2k(gcd(k, 12) = 1):k = 1, 5, 7, 11 → 21 = 2, 25 = 6, 27 = 11, 211 = 7。原根 {2, 6, 7, 11},恰 φ(12) = 4 个——数字完全咬合。
群论一般理论中,子群可以多到数不清;循环群却出奇地节制:
且 H_d 的元素恰是 G 中阶整除 d 的那些元素。∎
证明 H_d 的元素 gjn/d 的 (dn/d = n) 次幂为 1,故 H_d 是群且 |H_d| = d(互异,因 g 的幂在 n 步内互异)。反着看,若 H 是任一 d 阶子群,任取其非单位元 gk,则 (gk)d = 1 → n | kd → (n/d) | k(消去),即 gk ∈ H_d,故 H ⊆ H_d,而 |H| = |H_d| → H = H_d。∎
以 F_13^×(g = 2, n = 12)为例:d = 1, 2, 3, 4, 6, 12 各有一个子群,成员数正比于阶——其中 d = 6 的子群 ⟨22⟩ = {1, 3, 4, 9, 10, 12} 恰是第二章的二次剩余集!这条暗线将在第五章开花。
证明(陪集分拆) 对 g ∈ G,定义陪集 gH = {gh : h ∈ H}。① 每个陪集与 H 等势(乘 g 是双射)。② 两个陪集要么相等要么不交:g1H ∩ g2H ≠ ∅ 时,gh1 = g2h2 → g2 = g1(h1h2−1) ∈ g1H → g2H ⊆ g1H,对称得相等。③ 每个元素属于某个陪集(g ∈ gH,因 e ∈ H)。于是 G 被切成若干等大的陪集块:|G| = (块数)·|H|。②中「陪集数 · |H|」的块数记 [G : H],得 |G| = [G : H]·|H|。取 H = ⟨a⟩:|⟨a⟩| = ord(a) 整除 |G|,且 a|G| = (aord(a))|G|/ord(a) = e。∎
Fermat 小定理的三代证明就此同框:第二章的「项链翻转」(组合),Wilson 舞会配对(双射),本章的「陪集分拆」(结构)。第三个最抽象也最强大——它对任何有限群生效:Euler 定理 aφ(n) ≡ 1(mod n,gcd(a,n)=1)不过是把群换成 (ℤ/n)× 的免费推论。
本章最高峰。p 素数时,F_p^× 中必然存在阶为 p − 1 的元素。证明是一段漂亮的「计数拼图」:
第一步(定义计数函数) 对 d | p − 1,记 ψ(d) = F_p^× 中阶恰为 d 的元素个数。显然 Σd | p−1 ψ(d) = p − 1(每个元素有唯一的阶)。
第二步(上界 ψ(d) ≤ φ(d)) 阶为 d 的元素都满足 xd ≡ 1。分两情形:若阶 d 的元素一个也没有,ψ(d) = 0 ≤ φ(d),完成。若有一个,设为 a:则 1, a, …, ad−1 是 xd ≡ 1 的 d 个互不相同的根(4.2 性质②),而第三章 Lagrange 说 xd ≡ 1 至多 d 个根——所以它们是全部根,任何阶 d 的元素必须落在这个集合里。集合中阶恰为 d 的是哪些?ak 的阶 = d/gcd(d, k)(4.2 性质③),恰为 d ⟺ gcd(k, d) = 1,共 φ(d) 个。故 ψ(d) ≤ φ(d)。
第三步(欧拉 φ 恒等式) Σd | n φ(d) = n。证明:把分数 1/n, 2/n, …, n/n 按约分后的分母分类,分母为 d 的恰有 φ(d) 个,总数为 n。∎
第四步(合拢) p − 1 = Σ ψ(d) = Σ φ(d) 且逐项 ψ(d) ≤ φ(d)——总和相等的逐项不等式强制处处相等:ψ(d) = φ(d) 对一切 d | p−1。特别地 ψ(p−1) = φ(p−1) ≥ 1:阶为 p − 1 的元素存在,即原根存在!∎
也就是说:除了 1, 2, 4 与「奇素数幂 ×1 或 ×2」这些形状,其余的模都没有原根。边界的两侧行为迥异:
| 模 n | 有原根? | 乘法群 (ℤ/n)× 的样貌 |
|---|---|---|
| 7(素数) | ✓(3) | 6 阶循环群 |
| 9 = 32 | ✓(2) | 6 阶循环群 |
| 10 = 2·5 | ✓(3) | 4 阶循环群 |
| 8 | ✗ | {1,3,5,7}:四个元素阶全为 2(每个奇数平方 ≡ 1 mod 8) |
| 12 | ✗ | {1,5,7,11}:阶全为 2 |
| 15 | ✗ | {1,2,4,7,8,11,13,14}:最大阶 4 < 8 |
失败的原因各有面目:模 2k(k ≥ 3)的世界里,「±1 之外还有隐形的平方根」让阶永远上不去;模 15 则因 CRT 分解成两个互素世界的直积,两个循环群的公共节拍凑不满一整圈(群论语言:直积的元素阶是 lcm,15 时 lcm(2, 4) = 4 < 8)。定理的完整证明在本章挑战范围之外(涉及对 2k 的细致分析),但陈述与检验是本章的必修。
4.7 的计数证明顺手送出一份大礼:ψ(d) = φ(d) 对一切 d | p−1 成立。取 d = p − 1:
p = 13:φ(12) = 4 → 原根 4 个 {2, 6, 7, 11}(例 7 逐一验证)。p = 7:φ(6) = 2 → {3, 5}(例 3)。p = 11:φ(10) = 4 → {2, 6, 7, 8}。而且 4.7 的等式 ψ(d) = φ(d) 给出全表:
| 阶 d | 1 | 2 | 3 | 4 | 6 | 12 |
|---|---|---|---|---|---|---|
| φ(d) | 1 | 1 | 2 | 2 | 2 | 4 |
| F_13 实测 | {1} | {12} | {3, 9} | {5, 8} | {4, 10} | {2, 6, 7, 11} |
三行完美咬合:每个阶的「理论名额」φ(d) 与「实测名单」分毫不差。一张表同时验证了 4.7 的计数定理、4.5 的子群唯一性(阶 d 的元素凑成唯一的 d 阶子群)与第三章的解数统计——三个定理在同一条表上握手。
原根一到位,整套「以 g 为尺」的坐标系统就可以挂牌营业。设 g 是模 p 的原根,则每个与 p 互素的 a 都有唯一写法 a ≡ gk (mod p)(1 ≤ k ≤ p − 1):
指标就是离散对数:普通对数 log2 8 = 3 解的是「2 的几次方是 8」,指标 ind(8) 解的是「g 的几次方 ≡ 8 (mod p)」。区别只在幂运算发生在模 p 的折返世界里。Gauss 在《算术研究》中系统地使用指标表(Index-Tafel)做计算——那是 1801 年的「对数表」在有限世界的孪生兄弟。
指标的威力来自它把乘法群「同构搬运」到加法世界。设 g 为原根,a ≡ gu, b ≡ gv (mod p),则
注意模数换了:指标运算在模 p − 1 下进行(指数世界以 p − 1 为周期——Fermat 的又一面孔)。同理 ind(ak) ≡ k·ind(a) (mod p − 1)。乘法、幂、求逆,全部化作模 p−1 的加法、数乘与取负:
| 乘法世界(mod p) | 指标世界(mod p−1) | 备注 |
|---|---|---|
| a · b | ind a + ind b | 加法 |
| a / b | ind a − ind b | 减法 |
| ak | k · ind a | 数乘 |
| ak = b 是否有解 | k·x ≡ ind b (p−1) 是否有解 | 线性方程! |
最后一行是全场高潮:第三章苦心经营的线性同余方程理论(判据 g | b、解数 = g)在指数世界里精确接管了幂方程——第三章与第四章在此咬合成一台完整的机器。以 p = 13, g = 2 对账三笔:
指标算术的用途,是把「解幂方程」变成「解线性方程」。工具箱的中央就是指标表。p = 7, g = 3 的完整表(例 8 将详细用法):
| a | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| ind3(a) (mod 6) | 0 | 2 | 1 | 4 | 5 | 3 |
使用示范:解 3x ≡ 4 (mod 7)。查表 ind(4) = 4,方程即 3x ≡ 4 (mod 6)?——不,底数若恰是原根 g 本身,x 就是 ind(4) = 4。验:34 = 81 = 11·7 + 4 ✓。再示范「两数相乘的指标」:ind(2·5) = ind(10) = ind(3) = 1(10 ≡ 3),而 ind 2 + ind 5 = 2 + 5 = 7 ≡ 1 (mod 6) ✓。
指标表的构造是一次原根的幂巡游:算 31, 32, …, 36 逐个登记。表中值序 {0, 2, 1, 4, 5, 3} 杂乱无章——这份杂乱正是安全性的源泉(4.16)与「查账要细心」的原因(4.11)。
现在是收割时刻。解二项同余方程 xn ≡ a (mod p)(p ∤ a):两边取指标,
这是关于未知指标 y = ind(x) 的线性同余方程!第三章定理整装上阵:记 G = gcd(n, p − 1),方程有解 ⟺ G | ind(a);有解时恰 G 个,且给出 x 的 G 个互异解。翻译回乘法世界:
注(判据的来源) a(p−1)/G = gind(a)·(p−1)/G ≡ 1 ⟺ (p − 1) | ind(a)·(p − 1)/G ⟺ G | ind(a)——线性方程 n·y ≡ ind(a) (mod p−1) 的可解条件(第三章 3.2)原样投影。解数同源于线性方程理论。
这一举解释了第三章「对账表」的全部谜团:x3 ≡ 2 (13) 无解,因为 G = gcd(3, 12) = 3 而 ind(2) = 1,3 ∤ 1;x3 ≡ 8 (13) 恰三解,因为 8 = 23,ind(8) = 3·ind(2) = 3,3 | 3。当时只能「枚举验证」的现象,如今一行指标账算尽。
把 4.13 的判据展开成全景。p 素数,考虑「n 次幂映射」σ_n : x ↦ xn 在 F_p^× 上的行为(以原根为坐标,它就是 y ↦ n·y 的乘法映射,模 p − 1):
特殊情形一枚:n 整除 p − 1 时,G = n,像点 (p−1)/n 个、每个 n 层——第三章 3.16 那张 p = 13 的柱状图(金色顶格、暗色一根)由此获得完整解释:d | 12 时恰 d 根,d ∤ 12 时「像点」只有 1 个(x = 1)。再一枚:n = 2 时 G = 2,像点 = 平方像点 = 二次剩余,恰 (p−1)/2 个——第五章的主角提前在指标世界领到了身份证。
三章半的努力,可以给 F_p 出具一份「完整体检报告」了:
| 项目 | 结论 | 出处 |
|---|---|---|
| 加法群 (F_p, +) | p 阶循环群,结构最简 | 第二章 |
| 乘法群 (F_p^×, ·) | p−1 阶循环群(Gauss) | 本章 4.7 |
| 生成元个数 | φ(p−1) 个原根 | 本章 4.9 |
| 子群结构 | 每阶恰一个,塔形嵌套 | 本章 4.5 |
| 元素阶分布 | 阶 d 者恰 φ(d) 个 | 本章 4.7 |
| 多项式根数 | n 次至多 n 根(域) | 第三章 |
| 幂映射 σ_n | G = gcd(n, p−1) 层塔 | 本章 4.14 |
这张表的价值在于自足:F_p 的全部乘法行为,都能从「一个原根 + 模 p−1 的算术」推演。第五章将在这个自足体系上再叠一块砖——「平方」这一特殊幂映射(σ2)的像点分布规律,最终凝成二次互反律。届时可以发现:互反律的 Gauss 计数证明,正是本章陪集分拆与第三章根计数的再度合体。
指标表的最后一行其实写着警告。构造指标表需要逐个计算 g1, g2, g3, …——正向幂运算便宜(快速幂,第二章,O(log k) 步)。但反方向「给 a 求 k」——离散对数问题(DLP)——至今没有已知的高效算法。
难在哪里?实数世界 log 有单调性可用(夹逼、牛顿迭代),模 p 世界 gk 的值序彻底打乱(4.10 图)——折返毁灭了所有连续性工具。暴力枚举要 O(p) 步;聪明些的「大步小步」算法(BSGS,例 11)要 O(√p) 步与 √p 存储——√(2128) 级别的代价,工程上等于不可行。这条「单向性」(易正向、难逆向)正是公钥密码学的引擎。
1976 年,Diffie 与 Hellman 发表《密码学的新方向》:两个从未见过面的人,可以在窃听者眼皮底下商定共同密钥。其数论心脏正是本章的幂映射:
本章从「谁的幂走遍全群」的疑问出发,抵达了「乘法宇宙有一条主轴」的定理,并把轴上的坐标(指标)变成了工具箱。总结如下:
| 问题 | 答案 / 方法 | 背后的定理 |
|---|---|---|
| ak ≡ 1 的最小 k? | ord(a),判定只需查 p−1 的素因子 | 阶的性质(4.2–4.3) |
| 谁走遍全群? | 原根存在(p 素数),恰 φ(p−1) 个 | Gauss 存在定理(4.7–4.9) |
| 哪些模有原根? | n ∈ {1, 2, 4, pk, 2pk} | Gauss 全定理(4.8) |
| 子群有几个? | 每阶 d | n 恰一个 ⟨gn/d⟩ | 循环群子群唯一性(4.5) |
| 为什么阶整除群阶? | 陪集等大切分 | 群版 Lagrange(4.6) |
| 乘法怎么变加法? | ind(ab) ≡ ind a + ind b (p−1) | 指标同构(4.10–4.11) |
| xn ≡ a (p) 有解吗? | a(p−1)/G ≡ 1,G = gcd(n, p−1),恰 G 解 | 指标判据(4.13–4.14) |
| 反向求 k 难吗? | 难(DLP)——密码学的墙 | 单向性(4.16–4.17) |
题 求 3 在乘法群 (ℤ/10ℤ)× 中的阶,并判断它是否为原根。
解 (ℤ/10ℤ)× = {1, 3, 7, 9}(与 10 互素的剩余类),群阶 = φ(10) = 4,故候选阶是 4 的因子:1, 2, 4。逐级检验:
阶为 4——恰好等于全群的阶,所以 3 是模 10 的原根!这与 Gauss 存在定理吻合:10 = 2·5 属于「2pk」族,必有原根。它的幂走遍全群:30=1, 31=3, 32=9, 33=27≡7——四个成员一个不缺。
题 已知 ord(2) = 12 (mod 13),用公式 ord(ak) = 12/gcd(12, k) 预报 24, 26, 28 的阶,并逐个验证。
预报 ord(24) = 12/gcd(12,4) = 12/4 = 3;ord(26) = 12/gcd(12,6) = 2;ord(28) = 12/gcd(12,8) = 3。
验证 24 = 16 ≡ 3,而 33 = 27 ≡ 1 (13) 且 31, 32 ≠ 1 → 阶 3 ✓。26 = 64 ≡ 12 ≡ −1,平方即 1 而自身不是 1 → 阶 2 ✓。28 = 256 = 19·13 + 9 ≡ 9,93 = 729 = 56·13 + 1 ≡ 1,91 ≠ 1 → 阶 3 ✓。三发三中。
| k | 1 | 2 | 3 | 4 | 6 | 8 | 12 |
|---|---|---|---|---|---|---|---|
| gcd(12,k) | 1 | 2 | 3 | 4 | 6 | 4 | 12 |
| ord(2k) 预报 | 12 | 6 | 4 | 3 | 2 | 3 | 1 |
题 求 (ℤ/7ℤ)× 的全部生成元(原根)。
解 群阶 6,候选阶为 1, 2, 3, 6。逐个求阶:
| a | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 幂迹 | 1 | 2,4,1 | 3,2,6,4,5,1 | 4,2,1 | 5,4,6,2,3,1 | 6,1 |
| 阶 | 1 | 3 | 6 | 3 | 6 | 2 |
生成元(阶 6 者)为 3 与 5——恰 φ(6) = 2 个 ✓。注意 2 与 4 的幂迹是彼此的「前半段」:⟨2⟩ = {1, 2, 4} 是 3 阶子群,4 = 22 与 2 同群;而 3、5 的迹各自铺满全部六格。名字对账:3 与 5 = 35 ≡ 5 (7),5 的指标是 5——两生成元的指标 1 与 5 恰是 6 的既约剩余 ✓。
题 列出 (ℤ/13ℤ)× = ⟨2⟩ 的全部子群,验证「每阶恰一个」。
解 n = 12 的因子:1, 2, 3, 4, 6, 12。按公式 H_d = ⟨212/d⟩:
| 阶 d | 生成元 | 成员 | 备注 |
|---|---|---|---|
| 12 | 2 | 全群 {1,…,12} | — |
| 6 | 22 = 4 | {1, 3, 4, 9, 10, 12} | = 二次剩余集! |
| 4 | 23 = 8 | {1, 5, 8, 12} | ⟨5⟩ 同一群 |
| 3 | 24 = 16 ≡ 3 | {1, 3, 9} | — |
| 2 | 26 = 64 ≡ 12 | {1, 12} | −1 所在 |
| 1 | 1 | {1} | 平凡群 |
六个子群、六个阶、一一对应——「每阶恰一」的塔形结构完整落地。链式嵌套可见:{1} ⊂ {1,12} ⊂ {1,3,9} ⊂ {1,3,4,9,10,12} ⊂ 全群,以及 {1,12} ⊂ {1,5,8,12} ⊂ 全群。
题 以 G = (ℤ/13ℤ)×、H = {1, 5, 8, 12}(4 阶子群)为例,完成陪集分拆,并用它复核 Fermat 小定理。
解 陪集按代表元 1, 2, 4 展开:
三块各 4 元、互不相交、并集恰为全部 12 个元素:12 = 3 × 4 ✓。于是 [G : H]·|H| = 3·4 = 12 = |G|。任取元素 a(如 a = 7):7 在 4H 中,74 = 2401 = 184·13 + 9 ≡ 9?——检验阶:73 = 343 = 26·13 + 5 ≡ 5 ≠ 1,712 = (74)3 = 93 = 729 ≡ 1 ✓。每个元素的阶(4.9 户口册)都整除 12,故 a12 ≡ 1 对一切 a 成立——Fermat 到手。
题 用判定树求模 13 的最小原根。
解 p − 1 = 12 = 22·3。检验 a = 2:只需查 12 的真素因子幂——26 与 24:
26 ≠ 1 → 阶含满 22 因子;24 ≠ 1 → 阶含满 3 因子。两者合拢:ord(2) = 22·3 = 12 ✓。2 就是原根——第一次尝试即命中。
顺手验算法:若先查 26 ≡ 1 会怎样?那阶只能落在 {1, 2, 3, 6} 中,原根梦碎,需换 3 再试。判定树的次序(先大因子后小因子)保证最少的检验次数。
题 求模 13 的全部原根,并核对「原根个数 = φ(p−1)」。
解 已知 2 是原根,则原根全集 = {2k : gcd(k, 12) = 1}。12 的既约剩余:k = 1, 5, 7, 11。计算:
原根全集 {2, 6, 11, 7}——恰 φ(12) = 4 个 ✓。反向核验(抽一个):66 = 46656?用阶:ord(6) = 12/gcd(12, 5) = 12 ✓(6 = 25,5 与 12 互素)。四个原根的「指标」{1, 5, 7, 11} 正是 12 的既约剩余系——原根的指标恒与 p−1 互素,这是「生成元坐标」的又一次自我印证。
题 以 g = 3 为原根,编制 mod 7 的完整指标表,并用它解 2x ≡ 5 (mod 7)。
编表 3 的幂巡游:31=3, 32=2, 33=6, 34=4, 35=5, 36=1。登记:
| a | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| ind3(a) | 0 | 2 | 1 | 4 | 5 | 3 |
用表解方程 2x ≡ 5 (7):取指标,2 + ind(x) ≡ ind(5) = 5 (mod 6),故 ind(x) = 3,x = 33 = 27 ≡ 6。验:6·2 = 12 ≡ 5 ✓。整个过程只用了模 6 的一次减法——乘法方程降格为小学算术。
顺手套出逆元 2 的逆 = ind 为 −2 ≡ 4 者 = 4(4·2 = 8 ≡ 1 ✓)。整张逆元表由「指标取负」一键生成:1↔0, 2↔4(2 的逆 4), 3↔1, 5↔1? ——5 的逆是 3(ind 5 = 5, −5 ≡ 1 = ind 3 ✓)。
题 判断 x4 ≡ 3 (mod 11) 与 x4 ≡ 2 (mod 11) 的可解性,有解者求全部解。
编表 mod 11 的原根 g = 2。幂巡游:2, 4, 8, 5, 10, 9, 7, 3, 6, 1 → ind(3) = 8, ind(2) = 1, ind(4) = 2。
第一题 x4 ≡ 3:取指标 4y ≡ ind(3) = 8 (mod 10)。G = gcd(4, 10) = 2 | 8 ✓ 有解,恰 2 个。约去 2:2y ≡ 4 (5),y ≡ 2 (5),即 y ∈ {2, 7}。回乘法世界:x = 22 = 4 或 x = 27 = 128 = 11·11 + 7 ≡ 7。解 {4, 7}。验:44 = 256 = 23·11 + 3 ✓;74 = 2401 = 218·11 + 3 ✓。
第二题 x4 ≡ 2:4y ≡ ind(2) = 1 (10),G = 2 ∤ 1 → 无解。判据式等价形式:2(11−1)/2 = 25 = 32 ≡ 10 ≢ 1 (11),同样宣判无解。
题 解 x3 ≡ 2 (mod 13) 与 x3 ≡ 8 (mod 13)。
第一题 ind(2) = 1(g = 2):3y ≡ 1 (12),G = gcd(3, 12) = 3 ∤ 1 → 无解。判据复核:212/3 = 24 = 16 ≡ 3 ≢ 1 ✓ 一致。立方世界根本没有 2 这个「号码」。
第二题 ind(8) = 3·ind(2) = 3:3y ≡ 3 (12),3 | 3 ✓ 恰 3 解。y ≡ 1 (4),即 y ∈ {1, 5, 9}。回乘法世界:x = 21 = 2, 25 = 32 ≡ 6, 29 = 512 = 39·13 + 5 ≡ 5。解 {2, 6, 5}。逐一验收:23 = 8 ✓;63 = 216 = 16·13 + 8 ✓;53 = 125 = 9·13 + 8 ✓。
几何解读 三次幂映射在 F_13 上把 12 个非零元压成 4 个像点 {1, 5, 8, 12}(指标 {0, 3, 6, 9}),8 是像点、2 不是——一张 4 层塔的楼层表,胜过所有盲目枚举。
题 解 5x ≡ 8 (mod 23);再演示「大步小步」(BSGS)算法如何把它变成 √23 量级的工作量。
暴力 逐个算 51=5, 52=25≡2, 53=10, 54=50≡4, 55=20, 56=100=4·23+8 ✓——x = 6。小模秒解;p 大时暴力 O(p) 步不可行。
大步小步 m = ⌈√22⌉ = 5。写 x = 5i + j(0 ≤ j < 5):方程即 (55)i·5j ≡ 8。先「小步」存表:50..54 = {1, 5, 2, 10, 4}(52 = 25 ≡ 2, 53 = 10, 54 = 50 ≡ 4)。再「大步」计算 55 = 3125 = 135·23 + 20 ≡ 20 及其逆:20−1 = 15(20·15 = 300 = 13·23 + 1 ✓)。逐个算 8·15j:j = 0 → 8(不在表);j = 1 → 120 = 5·23 + 5 ≡ 5 ✓ 命中(5 = 51)。故 x = 1·5 + 1 = 6 ✓。
题 在 p = 23, g = 5 上完整走一遍 DH:Alice 秘密 a = 6,Bob 秘密 b = 15,求双方共享密钥。
第零步(资格审验) 5 是 mod 23 的原根吗?22 = 2·11,查 511 与 52:52 = 25 ≡ 2 ≠ 1;511 = 58·52·5,54 = (52)2 = 4, 58 = 16 → 511 = 16·2·5 = 160 = 6·23 + 22 ≡ 22 ≡ −1 ≠ 1 → 阶 22 ✓ 原根合格。
第一步(各自广播) A = 56:54 = 4, 56 = 4·25 ≡ 4·2 = 8 → A = 8。B = 515 = 58·54·52·5 = 16·4·2·5 = 640 = 27·23 + 19 → B = 19。
第二步(各自合成) Alice:K = Ba = 196:192 = 361 = 15·23 + 16 ≡ 16, 194 ≡ 162 = 256 = 11·23 + 3 ≡ 3, 196 = 3·16 = 48 ≡ 2。Bob:K = Ab = 815:82 = 64 ≡ 18, 84 ≡ 182 = 324 = 14·23 + 2 ≡ 2, 88 ≡ 4, 815 = 4·2·18·8 = 1152 = 50·23 + 2 ≡ 2。共享密钥 K = 2 ✓。
练 1.1 求 7 在 (ℤ/24ℤ)× 中的阶。提示:(ℤ/24)× 阶为 φ(24) = 8,候选因子 1, 2, 4, 8。72 = 49 ≡ 1 (24) → 阶 2。(24 不在 Gauss 绿区,群非循环,阶普遍偏小。)
练 1.2 已知 ord(3) = 6 (mod 7),直接写出 32, 33, 36 的阶。提示:ord(32) = 6/gcd(6,2) = 3;ord(33) = 2;ord(36) = 1。公式一遍过,不必逐个乘。
练 1.3 F_11 中 25 = 32 ≡ 10 ≡ −1。问 ord(2) 是多少?提示:(−1)2 = 1 且 ord(2) ∤ 5(否则 25 = 1)→ 阶恰 10。设计巧的题:a5 = −1 是「阶为双数」的指纹。
练 1.4 mod 17 中 28 = 256 = 15·17 + 1 ≡ 1,且 24 = 16 ≡ −1。问 ord(2)?提示:8 整除阶的候选(28 = 1 → 阶 | 8),而 24 ≠ 1 排除因子 1, 2, 4 → 阶 = 8。2 是 mod 17 的「半原根」(阶 8 = 16/2)。
练 2.1 用判定树求 ord(3) (mod 13)。提示:n = 12 = 22·3。33 = 27 ≡ 1 → 阶整除 3 → 是 1 或 3;31 ≠ 1 → 阶 3。判定树在大因子处提前短路。
练 2.2 求 ord(5) (mod 23)。提示:n = 22 = 2·11。511 = 3125 mod 23:3125 = 135·23 + 20 ≡ 20 ≡ −3 ≠ 1 → 留满 11 位;52 = 2 ≠ 1 → 留满 2 位。阶 = 22:5 是原根(DH 主角果然合格)。
练 2.3 求 ord(10) (mod 13),并用指标公式复核。提示:判定树:102 = 100 ≡ 9 ≠ 1;103 = 1000 = 76·13 + 12 ≡ −1 ≠ 1;106 = (103)2 ≡ 1 → 阶 6。指标复核:幂巡游 21=2, 22=4, 23=8, 24=3, 25=6, 26=12, 27=11, 28=9, 29=5, 210=10, 211=7 → ind 10 = 10,ord = 12/gcd(12,10) = 6 ✓ 两路同票。教训:查表错一格,全题翻船——再次致敬 Gauss 的表。
练 3.1 (ℤ/9ℤ)× = {1, 2, 4, 5, 7, 8}。验证 2 是原根,并写出全部原根。提示:26 = 64 = 7·9 + 1 ≡ 1,23 = 8 ≠ 1,22 = 4 ≠ 1 → 阶 6 ✓。原根 = 2k(gcd(k,6)=1): 2, 25 = 32 ≡ 5 → {2, 5} = φ(6) = 2 个。9 = 32 在 Gauss 绿区 ✓。
练 3.2 6 阶循环群有几个 3 阶子群?非循环的 6 阶群(S3)呢?提示:循环群每阶恰一:一个 3 阶子群。S3 有一个 3 阶子群(A3)但另有三个 2 阶子群——「每阶恰一」在 2 阶处破产。子群结构是循环性的指纹。
练 3.3 证明:循环群的直积 ⟨a⟩×⟨b⟩(|a| = 3, |b| = 5)仍是循环群,并找出它的生成元。提示:(a, b) 的阶 = lcm(3, 5) = 15 = 全群阶(3, 5 互素)→ (a, b) 生成全群。3 与 5 不互素时(如 3 与 6)最大阶 = lcm(3,6) = 6 < 18 → 非循环——这正是模 15 无原根的群论机理。
练 4.1 写出 (ℤ/17ℤ)× 的 8 阶子群。提示:g = 3(原根),H = ⟨316/8⟩ = ⟨32⟩ = ⟨9⟩。成员:9, 92 = 81 ≡ 13, 93 ≡ 15, 94 ≡ 16, 95 ≡ 8, 96 ≡ 4, 97 ≡ 2, 1 → {1, 2, 4, 8, 9, 13, 15, 16}。恰 8 元 ✓。
练 4.2 上题的 8 阶子群里有没有原根(模 17 的)?提示:没有!原根的阶 = 16 ∤ 8,子群元素的阶整除 8。「子群不含生成元」是循环群的普遍现象——塔的每一层都比顶层安静。
练 4.3 证明:循环群 G = ⟨g⟩ 中,元素 a = gk 的阶整除 d ⟺ a ∈ H_d = ⟨gn/d⟩。提示:ord(gk) = n/gcd(n,k) 整除 d ⟺ d·gcd(n,k) ≥ …直接走:ord | d ⟺ (gk)d = 1 ⟺ n | kd ⟺ (n/d) | k ⟺ gk ∈ ⟨gn/d⟩。这恰是 4.5 定理证明的核心半页。
练 5.1 G = (ℤ/11ℤ)×,H = {1, 10}。列出全部陪集。提示:10 ≡ −1,H = {±1}。陪集成对 {a, −a}:{1,10}, {2,9}, {3,8}, {4,7}, {5,6}——五块瓷砖铺满 10 元素,10 = 5×2 ✓。
练 5.2 用陪集论证证明:有限群中阶为 2 的元素个数是奇数(连同单位元凑偶)。提示:把 G 按子群 {1, t}(t 为任一 2 阶元)分陪集:{g, gt}。2 阶元散落在各陪集内每陪集恰一个(gt 的阶 = g 的阶)……更直接:G \ {1} 中非 2 阶元素成对出现(a 与 a−1 不同且互逆),故其个数为偶 → 2 阶元个数 = |G| − 1 − 偶 = |G| − 1 为奇当 |G| 偶。
练 5.3 Euler 定理实战:求 7100 mod 40。提示:φ(40) = φ(8)φ(5) = 4·4 = 16;gcd(7, 40) = 1 → 716 ≡ 1。100 = 6·16 + 4 → 7100 ≡ 74 = 2401 = 60·40 + 1 ≡ 1。答案 1。(74 ≡ 1 (40):2401 − 2400 = 1 ✓。)
练 6.1 求模 11 的最小原根。提示:试 2:10 = 2·5;25 = 32 ≡ 10 ≡ −1 ≠ 1,22 = 4 ≠ 1 → 阶 10 ✓。g(11) = 2。
练 6.2 求模 17 的最小原根。提示:试 2:28 ≡ 1(练 1.4)→ 阶 8 ✗。试 3:16 = 24;38 = (34)2,34 = 81 = 4·17 + 13 ≡ 13 ≡ −4,38 ≡ 16 ≡ −1 ≠ 1 → 留满 8 位;32 = 9 ≠ 1 → 留满 2 位。阶 16 ✓ g(17) = 3。
练 6.3 已知 2 是 mod 13 的原根,直接写出全部 4 个原根(不逐一检验)。提示:2k,k ∈ {1, 5, 7, 11} → {2, 6, 11, 7}(例 7 的清单)。一表走天下。
练 7.1 不求原根本身,报出模 7、11、17、19 的原根个数。提示:φ(6) = 2;φ(10) = 4;φ(16) = 8;φ(18) = 6。个数只看 p − 1 的分解。
练 7.2 p 取何值时模 p 恰有 2 个原根?提示:φ(p−1) = 2 ⟺ p − 1 ∈ {3, 4, 6} ⟺ p ∈ {4?非素, 5, 7} → p = 5 与 p = 7。(φ(n) = 2 的 n 只有 3, 4, 6。)
练 7.3 mod 13 中,6 是原根(例 7)。写出以 6 为底的 11 的指标 ind6(11)。提示:换底公式:11 = 27(g = 2 坐标),而 6 = 25 → 2 = 65−1,5−1 mod 12 = 5(5·5 = 25 ≡ 1)。11 = 27 = (65)7 = 635 = 611(35 mod 12 = 11)→ ind6(11) = 11。换底 = 坐标乘可逆常数。
练 8.1 编制 mod 11 的指标表(g = 2),并求 3−1。提示:幂巡游 2, 4, 8, 5, 10, 9, 7, 3, 6, 1 → ind(2)=1, ind(4)=2, ind(8)=3, ind(5)=4, ind(10)=5, ind(9)=6, ind(7)=7, ind(3)=8, ind(6)=9, ind(1)=0。3 的逆:指标取负 −8 ≡ 2 → x = 22 = 4。验:3·4 = 12 ≡ 1 ✓。
练 8.2 用指标表 mod 11 解 5x ≡ 3 (11)。提示:ind 5 + y ≡ ind 3 → 4 + y ≡ 8 (10) → y = 4 → x = 24 = 5。验:5·5 = 25 ≡ 3 ✓。(5 自己是自己的逆。)
练 8.3 用指标表计算 75 mod 11。提示:5·ind(7) = 5·7 = 35 ≡ 5 (10) → 75 = 25 指标者 = 10。验:72 = 49 ≡ 5, 74 ≡ 3, 75 = 21 ≡ 10 ✓。
练 9.1 用指标法解 x5 ≡ 3 (mod 11)。提示:5y ≡ ind 3 = 8 (10)。gcd(5, 10) = 5 ∤ 8 → 无解。判据复核:310/5 = 32 = 9 ≢ 1 ✓。
练 9.2 用指标法解 x5 ≡ 10 (mod 11)。提示:5y ≡ ind 10 = 5 (10),5 | 5 ✓ 恰 5 解:y ≡ 1 (5) → y ∈ {1, 3, 5, 7, 9} → x = 2, 8, 10, 7, 6。验抽:85 = (23)5 = 215 = 25·(210) ≡ 10 ✓。
练 9.3 mod 13 中解 x4 ≡ 3 (13)。提示:ind 3 = 4(24 = 16 ≡ 3)。4y ≡ 4 (12):gcd(4, 12) = 4 | 4 ✓ 恰 4 解,y ≡ 1 (3) → y ∈ {1, 4, 7, 10} → x = 2, 3, 11, 10。验抽:34 = 81 = 6·13 + 3 ✓;104 = (102)2 = 92 = 81 ≡ 3 ✓。
练 10.1 p = 17:x6 ≡ 1 有几个根?提示:gcd(6, 16) = 2 → 2 根:x = ±1 = {1, 16}。对照判据:任何 x 满足 x6 = 1 → x 的阶整除 gcd(6, 16) = 2。
练 10.2 p = 17:x8 ≡ 1 有几个根?x8 ≡ −1 呢?提示:gcd(8, 16) = 8 → x8 ≡ 1 恰 8 根({±1, ±2, ±4, ±8} 的幂集……具体 {1,2,4,8,9,13,15,16} = 8 阶子群)。x8 ≡ −1 = 16:ind(16) = 8(38 ≡ −1? g = 3:38 ≡ 16 ✓);8y ≡ 8 (16) → y ≡ 1 (2) → 8 解 {31, 33, …, 315}。
练 10.3 证明:p 素数时 x(p−1)/2 ≡ ±1 (mod p) 对一切 p ∤ x 成立。提示:xp−1 ≡ 1,而 x(p−1)/2 的平方是 1 → 它是 x2 = 1 的根 → ±1(域中二次方程至多两根)。这半页是第五章 Euler 判据的入口:到底 +1 还是 −1?——「是 QR」与「是 QNR」的分界线。
练 11.1 DH with p = 23, g = 5:Alice 的公开值 A = 8。窃听者暴力枚举求 a,第几步命中?提示:51 = 5, 52 = 2, 53 = 10, 54 = 4, 55 = 20, 56 = 8 ✓ 第 6 步。a = 6。小模的「迷雾」其实是一层纱。
练 11.2 同参数,Bob 的公开值 B = 19。求 b 并算共享密钥 K。提示:巡游 57 = 100 ≡ 8? 57 = 56·5 = 8·5 = 40 ≡ 17, 58 ≡ 85 ≡ 16, 59 ≡ 80 ≡ 11, 510 ≡ 55 ≡ 9, 511 ≡ 45 ≡ 22, 512 ≡ 110 ≡ 18, 513 ≡ 90 ≡ 21, 514 ≡ 105 ≡ 13, 515 ≡ 65 ≡ 19 ✓ b = 15。K = 196 = 2(例 12)。
练 11.3 解释为何 DH 中可以公开 g 与 p,却必须保密 a 与 b。提示:公开量扮演「公共舞台」;秘密指数是唯一私产。安全模型:从 (g, ga) 求 a 是 DLP——单向函数把「舞台公开、剧本保密」变成可能。再追问一步:从 (g, ga, gb) 直接算 gab(不经离散对数)是 Diffie–Hellman 问题,被认为与 DLP 同等困难——这道题是整套协议的姓名。
高频错点归档:
| 错点 | 典型症状 | 纠正钥匙 |
|---|---|---|
| 指标运算用错模数 | 把 ind 运算写在 mod p 下 | 指标住在 mod p − 1 的世界 |
| 查表张冠李戴 | ind 11 = 11 式的「值当指数」 | 底账逐项核对,gk 与 k 两栏分开 |
| 忽视 Gauss 版图边界 | 在 mod 8、mod 15 里苦找原根 | 先查 n ∈ {1, 2, 4, pk, 2pk} |
| 解出幂方程不验收 | 指标候选直接当答案 | 回乘法世界逐个验明正身 |
三问自测:
一问:为什么「存在阶 p−1 的元素」等价于「每个阶 d | p−1 的名额 φ(d) 恰好住满」?提示:4.7 的总账论证——逐项上界 + 总和相等 → 处处顶格;ψ(p−1) ≥ 1 即原根存在。
二问:指标判据 xn ≡ a 有解 ⟺ a(p−1)/G ≡ 1 的「指标翻译」版本是什么?提示:G | ind(a),即线性方程 n·y ≡ ind(a) (p−1) 的可解条件——第三章 3.2 的判据在指数世界的投影。
三问:DH 的安全性押在哪一个问题上?它「难」的数学根源是什么?提示:DLP(及 DH 问题);根源是折返幂运算摧毁单调性,正向易、逆向难的「单向性」——目前无证明,是计算复杂性假设。
1801 年,24 岁的 Gauss 出版《算术研究》(Disquisitiones Arithmeticae)。这部用拉丁文写就、自费出版的著作,把此前散落两千年(Euclid、孙子、Fermat、Euler、Lagrange)的数论锻造成第一部系统科学。原根理论占据其第七篇——也是全书最「现代」的一篇。
Gauss 的原根篇章有三件大事:其一,给出阶(「阶」的术语照旧写作 exponents)的系统理论与原根存在性证明——本书 4.7 的计数证明即脱胎于《算术研究》第 55 目的论证;其二,编制模 p ≤ 100 的完整指标表(Index-Tafel),把指标算术变成可操作的工程;其三,以「分解 p − 1」为纲重组整个乘法世界——阶、子群、幂方程的可解性,全部挂在这条分解上。
1976 年之前,密码学的全部历史都建立在「共享秘密」上:双方先安全地见面、交换密钥,然后才能在公开信道通信。鸡生蛋的死结纠缠了两千年。Diffie 与 Hellman 的革命性发问:能否不需要预先会面,在窃听者眼皮底下协商出密钥?
答案就是本章的主角换了一身戏服。模幂 ga 容易算(快速幂),但由 ga 反推 a(离散对数)没有已知的高效算法——单向性。Alice 与 Bob 各自保守秘密 a、b,只交换 ga 与 gb;两股「公开的幂」在两端各自复合成 gab,而窃听者面对的正是离散对数的高墙。数学上,这堵墙由三块砖砌成:原根存在(4.7,保证坐标世界完整)、指标唯一(4.10,保证 gab 有确定含义)、DLP 之难(4.16,保证墙足够高)。
本章围绕一个疑问展开——「谁的幂走遍全群?」——最终把乘法群炼成一条可计算的轴。知识图谱:
三条延伸:
其一(分类的边界):并非所有群都循环——Gauss 版图(4.8)就是循环性的疆界图。研究「哪里循环、哪里不循环」,比研究「循环群内部」更能暴露结构的本质。
其二(坐标的自由):原根不唯一(φ(p−1) 个),但任何两个原根坐标系只差一个可逆缩放——结构在换底之下不变。这份「坐标系自由」后来长成同构与不变量的思想。
其三(难度的矿藏):循环让正向幂容易、让逆向对数困难——同一枚硬币的两面,一面是效率(快速幂),一面是安全(DLP)。现代密码学的全部游戏,就是在这枚硬币的边缘寻找支点。
任务 独立重建 4.7 的证明,五关闯将。每一关给自查点。
第一关(计数函数) 定义 ψ(d) = F_p^× 中阶恰为 d 的元素个数,证明 Σd | p−1 ψ(d) = p − 1。自查:为什么每个元素恰有一个阶?(阶的定义 + Fermat 保证存在。)
第二关(根的封闭) 证明 xd ≡ 1 (mod p) 至多 d 个根。自查:第三章 Lagrange;注意 d | p − 1 时 gcd(d, p−1) = d。
第三关(名额上界) 证明:若 ψ(d) > 0,则阶 d 的元素恰为「某个 d 阶元的 d 个幂中与 d 互素的指数位置」,从而 ψ(d) ≤ φ(d)。自查:ak 的阶 = d/gcd(d, k)(4.2 性质③);「d 个幂互异且都是 xd = 1 的根 → 占满全部根位」这一步在哪里用 Lagrange?
第四关(欧拉 φ 恒等式) 独立证明 Σd | n φ(d) = n(建议:分数 1/n, …, n/n 按约分后分母分类)。自查:分母为 d 的分数恰 φ(d) 个;两类计数(总分数 vs 按分母求和)必须相等。
第五关(合拢) 由逐项 ψ(d) ≤ φ(d) 与总和相等推出处处相等,完成原根存在 + 个数 φ(p−1) 的双杀。自查:「非负逐项不等 + 总和相等 ⟹ 处处相等」这一步为什么成立?(每项差非负且差之和为零。)
任务 综合运用指标法 + CRT,解联立幂方程组。以「x ≡ 3 (mod 7) 且 x3 ≡ 2 (mod 13)」为 specimen。
第一段(拆模) 两个方程模数互素(7 与 13),CRT 说模 91 下唯一合成——先分别解,再拼装。
第二段(方程一,直接读) x ≡ 3 (7):第一批候选 x ∈ {3, 10, 17, 24, …}(3 + 7k)。
第三段(方程二,指标流水线) mod 13:3y ≡ ind(2) = 1 (12),gcd(3,12) = 3 ∤ 1 → x3 ≡ 2 (13) 无解!方程组当场宣告无解——CRT 都不必上桌。
第四段(换一个 specimen) x ≡ 3 (7) 且 x3 ≡ 5 (13):ind(5) = 9,3y ≡ 9 (12) → y ≡ 3 (4) → y ∈ {3, 7, 11} → x ≡ 23 = 8, 27 = 11, 211 = 7 (13)。三候选 {8, 11, 7}。CRT 合成:与 x ≡ 3 (7) 联立——x = 7k + 3 ≡ 8 (13) → 7k ≡ 5 → k ≡ 5·2 = 10? (7−1 mod 13 = 2)→ k ≡ 10 → x = 73。同法 k ≡ ? 对 11:7k ≡ 8 → k ≡ 16 ≡ 3 → x = 24;对 7:7k ≡ 4 → k ≡ 8 → x = 59。三解 {73, 24, 59} (91)。自查:24 mod 7 = 3 ✓ 243 = 13824 = 1063·13 + 5 ✓;59 mod 7 = 3 ✓;73 mod 7 = 3 ✓ 733 = 389017 = 29924·13 + 5 ✓。
实验设计 在「指数轴」上观察 5x (mod 23) 的跳跃:把 x = 0..21 的幂值按序连线,折返轨迹乱作一团(混沌的表象);但把「小步表」(50..54)与「大步桥」(乘 5−5)分开画,BSGS 的两段桥结构立刻显形——乱序中藏着分层。
T1(阶) mod 19:判断 ord(4) 是否为 9?评讲:49 = (22)9 = 218 ≡ 1 ✓ 且 43 = 64 ≡ 7 ≠ 1,41 ≠ 1 → 阶 | 9 且非 1、非 3 → 阶 9 ✓。(18 = 2·9,只需查 29… 直接查 49 与 43 即可收网。)
T2(原根) p = 19:2 是否原根?评讲:29 = 512 = 26·19 + 18 ≡ −1 ≠ 1;22 = 4 ≠ 1(19−1 = 2·9,素因子 2 与 3:查 29 与 26):26 = 64 = 3·19 + 7 ≡ 7 ≠ 1 → 阶 18 ✓ 2 是原根。
T3(个数) mod 19 有几个原根?评讲:φ(18) = 6。
T4(指标方程) 用 g = 2 解 x4 ≡ 5 (mod 19)。评讲:ind(5) = 16(216 = 65536 = 3449·19 + 5 ✓)。4y ≡ 16 (18):gcd(4,18) = 2 | 16 ✓ 恰 2 解,2y ≡ 8 (9) → y ≡ 4 (9) → y ∈ {4, 13} → x = 24 = 16, 213 = 8192 = 431·19 + 3 ≡ 3。解 {16, 3}。验:34 = 81 = 4·19 + 5 ✓。
T5(Gauss 版图) 下列哪些模有原根:9, 14, 15, 25?评讲:9 = 32 ✓;14 = 2·7 ✓;15 ✗;25 = 52 ✓。三个绿区一个红区。
T6(DH 安全) p = 23, g = 5:窃听者已见 A = 8。用 BSGS 求 a,写出小步表与大步序列。评讲:小步 {1, 5, 2, 10, 4}(m = 5);5−5 = 15;大步 8, 8·15 ≡ 5 ✓ 命中 j = 1;a = 1·5 + 1 = 6。与例 11 一致——小模的墙是纸糊的,大素数才是铜墙铁壁。
《九章算术》少广章教我们开平方:给定 55 225,开方得 235——任何正整数(只要恰是完全平方数)都能在实数世界里找到平方根。现在把镜头转向钟表世界:在模 7 的世界里,谁的平方是几?把 1 到 6 逐个平方:
平方值的清单只有 {1, 2, 4} 三个——在实数世界「张手即来」的平方运算,到了 mod 7 的圆钟上竟只覆盖一半的地盘。3 与 5 在模 7 下永远开不出平方根:方程 x2 ≡ 3 (7) 无解。这不是缺陷,而是结构——平方映射把 6 个非零元压缩成 3 个平方位,而「谁能落进平方位」这个问题,将把我们一路引向 Gauss 的黄金定理。
「剩余」一词是 Euler 的手笔(residua quadratica):a 是某个数的平方剩下来的余数。0 是特殊户(02 ≡ 0,没有悬念),我们不把它算进两派。看模 11 的完整户口:
证明 考虑平方映射 σ: F_p^× → F_p^×,x ↦ x2。它是二对一的:对每个 x,恰有 x 与 −x 两个原像(p 为奇素数,x ≠ −x 当 x ≠ 0;第二章末的域结构保证)。再证每个平方位恰有两个原像:若 x2 ≡ y2,则 (x − y)(x + y) ≡ 0;第三章说过 F_p 是域(无零因子),故 x ≡ y 或 x ≡ −y。于是非零元按「± 对」分组成员 (p − 1)/2 对,每对产出一个平方值,且不同对的平方值互不相同(若 x2 ≡ y2 则 y ≡ ±x,属同一对)。平方值恰 (p − 1)/2 个,其余 (p − 1)/2 个非零元自动落入 QNR。∎
证明 四步接力,每步都借用前面章节的存折。① 记 f(x) = x(p−1)/2 − 1:第三章的 Lagrange 定理说 f 至多 (p−1)/2 个根。② 每个 QR 都是根:a ≡ x2 时,a(p−1)/2 = xp−1 ≡ 1(Fermat 小定理,第一章)。③ 数对账:QR 恰有 (p−1)/2 个(5.3),根至多 (p−1)/2 个,而 QR 全在根集里——根集与 QR 集合相等。④ 对任意 p ∤ a,记 t = a(p−1)/2:t2 = ap−1 ≡ 1(Fermat),而 x2 ≡ 1 在域中恰有两根 ±1(第三章),故 t = ±1;由 ③,t = +1 恰当 a ∈ QR。∎
横排写不顺眼,Legendre 把它竖起来——分子 a 是「待判定者」,分母 p 是「世界」:
符号与欧拉判据珠联璧合:
证明要点 乘性:欧拉判据说(a/p)= ±1 且 ≡ ae (mod p),于是 (a/p)(b/p) ≡ (ab)e ≡ (ab/p) (mod p);两个 ±1 若模 p 同余(p ≥ 3)则相等。只认余数:幂 ae 只看 a mod p。平方因子透明:(c2/p) = (c/p)2 = 1(c ≠ 0),由乘性移项即得。∎
引擎的钥匙 取 k = 1, …, (p−1)/2,把 ak 折算到 ±1, …, ±(p−1)/2。这 (p−1)/2 个绝对值两两不同:若 |ak| ≡ |aj|,则 ak ≡ ±aj,消去 a 得 k ≡ ±j (mod p);k, j 都在 1 与 (p−1)/2 之间,k ≡ j 给 k = j,k ≡ −j 不可能(和不超过 p − 1 且非零)。于是绝对值恰是 1, …, (p−1)/2 的一个重排。两边取积:∏(ak) ≡ ae·∏k(e = (p−1)/2),而折算把恰好 μ 个因子各添一个负号:∏(ak) ≡ (−1)μ·∏k。消去 ∏k(p ∤ ∏k):ae ≡ (−1)μ——这正是欧拉判据 + 引理的合一。∎
把引理对准 a = 2:折算零工作量——2k 本身就在 1 到 p−1 之间,直接数「哪些 2k 过线」:
μ 的奇偶只随 p mod 8 变化:p = 8m±1 时 μ 为偶,p = 8m±3 时 μ 为奇(逐一代入即验,见下表实例)。于是得到右补律:
读一遍:「p 在 q 世界里的平方身份」与「q 在 p 世界里的平方身份」,几乎总是相同——唯独两个都 ≡ 3 (mod 4) 时互相唱反调。素数之间居然存在这样精确的对镜规则,难怪 Gauss 称它「黄金定理」、后人誉之为「数论的宝石」。
定律先过一遍普查。取前六个奇素数 3, 5, 7, 11, 13, 17,把每对 (p, q) 的两个方向都填进同一张表——行是分子,列是分母:
证明(Gauss 数格点) 设 p < q。Gauss 引理说 (q/p) = (−1)μ1,其中 μ1 = #{k ≤ (p−1)/2 : qk mod p > p/2}。关键观察:qk mod p > p/2 ⟺ 存在整数 m 使 mp + p/2 < qk < (m+1)p,且 1 ≤ m ≤ (q−1)/2 ⟺ 格点 (k, m) 落在长方形 1 ≤ k ≤ (p−1)/2、1 ≤ m ≤ (q−1)/2 内直线 m = (q/p)·k 的下方。于是 μ1 = 直线下方格点数。对称地,把 p, q 互换再做一遍(用 p·j mod q 过 q/2 线),得 μ2 = 同一长方形内直线上方的格点数。直线上没有格点(qk = mp 要求 p | k,而 k < p)。故 μ1 + μ2 = 长方形总格点数 = ((p−1)/2)·((q−1)/2)。两式相乘:(q/p)(p/q) = (−1)μ1+μ2 = (−1)((p−1)/2)((q−1)/2)。∎
证明路线 三步(细节到挑战二逐步补齐)。① 双方对 a 完全乘性:σab = σ_aσ_b 给 ε 乘性;勒让德符号的乘性已有(5.6)。② 哨兵值:a = 1 时 σ 为恒等,两边皆 +1;a = −1 时 σ−1 是 (p−1)/2 个对换(x 与 −x 互换),ε = (−1)(p−1)/2 = (−1/p)(5.14 左补律)。③ 主引擎:Gauss 引理的 μ 恰好是 σ_a 把「正半带」{1, …, (p−1)/2} 送进「负半带」的元素个数——把 F_p^× 排成 1, …, ±(p−1)/2 的次序,σ_a 的奇偶性可数出为 (−1)μ = (a/p)。∎
互反律的实战价值:把「模大素数 p 的判定」降维成「模小数的判定」,模数沿 Euclid 算法一路缩小,必然落地。示范一次完整流水线——判 29 是否 mod 43 的 QR:
证明 左:欧拉判据直接代入 a = −1:(−1/p) ≡ (−1)(p−1)/2 (mod p),两边同为 ±1 故相等。几何读法:x2 ≡ −1 (p) 有解 ⟺ 存在「模 p 的 i」⟺ F_p 里有第四次单位根 ⟺ 4 | p − 1(第四章循环群:x4 = 1 恰 4 根 ⟺ 4 | p−1)。右:5.8 已证。∎
p ≡ 1 (4) 时魔杖失灵((p+1)/4 不是整数),指标法要整张对数表。1972 年前后,Tonelli 与 Shanks 给出通吃一切的迭代算法。设 p − 1 = 2s·q(q 奇),算法骨架:
互反律不是终点,而是一条长征路的第一个营地。Gauss 晚年(临终前完成的最后一篇论文)把它推广到双二次互反律——在 Gaussian 整数 ℤ[i] 里定义「四次剩余符号」;Eisenstein 与 Jacobi 竞赛般给出三次互反律(ℤ[ω] 世界)。每换一个数的世界,互反律就换一副面孔,而骨架不变。
五站旅程,此刻回望:「物不知数」的钟声把我们领进带余除法的世界(第一章);CRT 把两个钟表焊成一个直积(第二章);多项式与域让我们看清「根不会太多」(第三章);原根把乘法群炼成一条循环的轴(第四章);最终,在两素数互相对照的镜子里,我们捡起了高斯的宝石(本章)。
解 逐一平方(k = 1, …, 3 即可——k 与 7 − k 的平方相同,只需算半张表):12 ≡ 1;22 ≡ 4;32 ≡ 9 ≡ 2。三个平方值两两不同,由「二对一」定理(5.3)这已是全部:QR(7) = {1, 2, 4}。
解 p = 11:算 k = 1…5:12 = 1,22 = 4,32 = 9,42 = 16 ≡ 5,52 = 25 ≡ 3。QR(11) = {1, 3, 4, 5, 9},恰 5 = (11−1)/2 个。p = 13:算 k = 1…6:12 = 1,22 = 4,32 = 9,42 = 16 ≡ 3,52 = 25 ≡ 12,62 = 36 ≡ 10。QR(13) = {1, 3, 4, 9, 10, 12},恰 6 = (13−1)/2 个。
解 欧拉判据要算 5(11−1)/2 = 55 (mod 11)。平方接力:52 = 25 ≡ 3;54 = 32 = 9;55 = 54·5 = 9·5 = 45 ≡ 1 (mod 11)。幂值为 +1,判据宣判:5 是 QR mod 11。
复核 例 2 的平方表:5 = 42(16 ≡ 5)✓。两根为 ±4 即 {4, 7}。
解 三步降模流水线。第一步,乘性拆包:(−7/13) = (−1/13)(7/13)。第二步,左补律:13 ≡ 1 (4),(−1/13) = +1。第三步,互反律:7 ≡ 3 (4) 而 13 ≡ 1 (4),翻号开关未触发,(7/13) = (13/7) = (6/7);分解 (6/7) = (2/7)(3/7):右补律 7 ≡ −1 (8) 给 (2/7) = +1;互反律给 (3/7) = −(7/3) = −(1/3) = −1(双双 ≡ 3 (4),翻号)。合计 (6/7) = −1,故
解 p = 13,阈值 p/2 = 6.5。算 5k mod 13(k = 1, …, 6):5, 10, 15 ≡ 2, 20 ≡ 7, 25 ≡ 12, 30 ≡ 4。过线(> 6.5)者:10, 7, 12——μ = 3 为奇数,(5/13) = −1。
复核 QR(13) = {1, 3, 4, 9, 10, 12},5 不在册 ✓。另可用欧拉判据双保险:56 = (52)3 = 253 ≡ 123;12 ≡ −1,故 56 ≡ (−1)3 = −1 (13) ✓。
解 右补律只看 p mod 8。17 ≡ 1 → +1;19 ≡ 3 → −1;23 ≡ 7 ≡ −1 → +1;31 ≡ 7 ≡ −1 → +1;41 ≡ 1 → +1。
解 (3/11):找 3 的平方根——52 = 25 = 22 + 3 ≡ 3 (11),故 (3/11) = +1(另一根 −5 ≡ 6)。(11/3):11 ≡ 2 (3),而 mod 3 的平方表只有 12 = 1、22 = 1,2 不是平方,故 (11/3) = (2/3) = −1。
对账 乘积 (3/11)(11/3) = −1。翻号开关:3 ≡ 3 (4) 且 11 ≡ 3 (4)——双双 ≡ 3,互反律预言乘积 (−1)1·5 = −1 ✓。
解 第一步,乘性拆包:(15/101) = (3/101)(5/101)。第二步,逐因子过流水线。3 ≡ 3 (4) 而 101 ≡ 1 (4):翻号开关未触发,(3/101) = (101/3) = (2/3) = −1(101 ≡ 2 (3),mod 3 平方表里 2 出局)。5 ≡ 1 (4):同路放行,(5/101) = (101/5) = (1/5) = +1。第三步,合乘:
解(其一) x2 ≡ 2 (7):判 (2/7) = +1(7 ≡ −1 (8))。小表扫描(工具一):12 = 1,22 = 4,32 = 9 ≡ 2 ✓。根 {3, 4}(4 = 7 − 3 是 −3)。
解(其二) x2 ≡ 3 (11):判 (3/11) = +1(例 7,3 = 52)。p = 11 ≡ 3 (4),魔杖(工具三):x = 3(11+1)/4 = 33 = 27 ≡ 5 (11)。根 {5, 6}。
解 算 k = 1…14:1, 4, 9, 16, 25, 36 ≡ 7, 49 ≡ 20, 64 ≡ 6, 81 ≡ 23, 100 ≡ 13, 121 ≡ 5, 144 ≡ 28, 169 ≡ 24, 196 ≡ 22。QR(29) = {1, 4, 5, 6, 7, 9, 13, 16, 20, 22, 23, 24, 25, 28},恰 14 = (29−1)/2 个。
解 按左补律分两个世界。若 p ≡ 3 (4)(如 p = 7):−1 不是 QR,于是 x2 + y2 ≡ 0 且 y ≠ 0 将给出 (x/y)2 ≡ −1,矛盾——唯一解是 (0, 0),解数 1。若 p ≡ 1 (4)(如 p = 5, 13):存在 x0 使 x02 ≡ −1(p = 5 时 x0 = 2(22 = 4 ≡ −1);p = 13 时 x0 = 5(52 = 25 ≡ −1,另一根 8))。则 x2 + y2 ≡ 0 ⟺ x ≡ ±x0·y:对每个 y ∈ F_p 得 x = x0y 与 x = −x0y,y = 0 时两支重合为 (0, 0)。解数 = 1 + 2(p−1) = 2p − 1:p = 5 给 9,p = 13 给 25,程序复验一致 ✓。
第一阶段(判定) (7/29):7 ≡ 3 (4) 而 29 ≡ 1 (4),翻号开关未触发,(7/29) = (29/7) = (1/7) = +1——有解,开战。
第二阶段(求根) p = 29 ≡ 1 (4),魔杖失灵;改用工具二「凑眼前解」:62 = 36 = 29 + 7 ≡ 7 (29) ✓。根 x0 = 6。
第三阶段(验收) 两根 {6, 23}(23 = 29 − 6 = −6):62 = 36 ≡ 7 ✓;232 = 529 = 18·29 + 7 = 522 + 7 ≡ 7 ✓。和 6 + 23 = 29 ≡ 0,积 6·23 = 138 = 4·29 + 22 ≡ −7 (29) ✓(Vieta 模版:和 0、积 −a)。
解 算 k = 1 … 8:12 = 1,22 = 4,32 = 9,42 = 16,52 = 25 ≡ 8,62 = 36 ≡ 2,72 = 49 ≡ 15,82 = 64 ≡ 13。QR(17) = {1, 2, 4, 8, 9, 13, 15, 16},恰 8 = (17−1)/2 个。
解 8 = 52,根 {5, 12}:和 17 ≡ 0 ✓,积 60 = 3·17 + 9 ≡ −8 ✓。13 = 82,根 {8, 9}:和 17 ≡ 0 ✓,积 72 = 4·17 + 4 ≡ −13 ✓。
解 算 65 (mod 11):62 = 36 ≡ 3;64 = 32 = 9;65 = 9·6 = 54 ≡ 10 ≡ −1 (11)。幂值 −1:6 是 QNR mod 11。复核:例 2 的户口册 QR(11) = {1, 3, 4, 5, 9},6 不在册 ✓。
解 72 = 49 ≡ 5;74 = 52 = 25 ≡ 3;75 = 3·7 = 21 ≡ 10 ≡ −1 (11)。7 是 QNR,x2 ≡ 7 (11) 无解。附带收获:6 与 7 的判据都是 −1,而 6·7 = 42 ≡ 9 = 32,判据给 (−1)(−1) = +1——乘性法则的实弹验证(5.6)。
解 分子去平方因子(5.6 第三条):12 = 4·3,(12/17) = (4/17)(3/17) = (3/17)。互反律:3 ≡ 3 (4),17 ≡ 1 (4),不翻号,(3/17) = (17/3) = (2/3) = −1。故 (12/17) = −1。复核:练 1.1 的 QR(17) 全集中无 12 ✓。
解 (30/17) = (2/17)(3/17)(5/17)。(2/17):17 ≡ 1 (8) → +1。(3/17) = −1(练 3.1)。(5/17):5 ≡ 1 (4),(5/17) = (17/5) = (2/5) = −1。合计 (30/17) = (+1)(−1)(−1) = +1。负号版:(−30/17) = (−1/17)(30/17) = (+1)(+1) = +1(17 ≡ 1 (4))。抽验:30 ≡ 13 (17),13 ∈ QR(17) ✓;−30 ≡ 4 (17) = 22,当然 +1 ✓。
解 p = 17,阈值 8.5。算 7k mod 17(k = 1 … 8):7, 14, 21 ≡ 4, 28 ≡ 11, 35 ≡ 1, 42 ≡ 8, 49 ≡ 15, 56 ≡ 5。过线(> 8.5)者:14, 11, 15——μ = 3 为奇,(7/17) = −1。复核:QR(17) = {1, 2, 4, 8, 9, 13, 15, 16},7 不在册 ✓;另与练 3.1 的流水线对账:(7/17):7 ≡ 3 (4),17 ≡ 1 (4) → (17/7) = (3/7) = −(7/3) = −(1/3) = −1 ✓(双双翻号一次)。两路同归。
解 余数 7, 14, 4, 11, 1, 8, 15, 5 折算到 (−8.5, 8.5):7, −3, 4, −6, 1, 8, −2, 5。绝对值序列:7, 3, 4, 6, 1, 8, 2, 5——恰是 {1, …, 8} 各一次 ✓。三个负值 −3, −6, −2 对应普通余数 14, 11, 15,正是计数 μ = 3 的三个「过线者」。
解 判定:29 ≡ 1 (4),左补律放行。求根(工具二):122 = 144 = 5·29 − 1 ≡ −1 (29) ✓。两根 {12, 17}。验收:122 + 1 = 145 = 5·29 ✓;172 + 1 = 290 = 10·29 ✓。mod 29 的「虚数单位」取 i = 12 或 i = 17(= −12),两个选择对应复平面的两种定向。
解 19 ≡ 3 (4),左补律说 (−1/19) = −1:x2 ≡ −1 (19) 无解。代数复核:QR(19) = {1, 4, 5, 6, 7, 9, 11, 16, 17}(半张表:1, 4, 9, 16, 25 ≡ 6, 36 ≡ 17, 49 ≡ 11, 64 ≡ 7, 81 ≡ 5),−1 ≡ 18 不在册 ✓。几何翻译:mod 19 的世界里不存在「旋转九十度」的自同构——平方世界的罗盘在 p ≡ 3 (4) 处缺针。
解 拆包:(21/43) = (3/43)(7/43)。双翻号现场:3 ≡ 3 (4) 且 43 ≡ 3 (4),翻号:(3/43) = −(43/3) = −(1/3) = −1。7 ≡ 3 (4) 且 43 ≡ 3 (4),再翻号:(7/43) = −(43/7) = −(1/7) = −1。合乘:(21/43) = (−1)·(−1) = +1——x2 ≡ 21 (43) 有解。
解 (3/43) = −1(上);(43/3) = (1/3) = +1:乘积 −1 ✓(双双 ≡ 3 (4),指数 1·21 = 21 奇)。(7/43) = −1;(43/7) = (1/7) = +1:乘积 −1 ✓。注意 43 mod 7 = 1 与 43 mod 3 = 1 的「幸运落地」——两个方向都缩到常数符号,对账零负担。
解(流水线路线) 拆包:(−15/17) = (−1/17)(3/17)(5/17)。(−1/17):17 ≡ 1 (4) → +1。(3/17):17 ≡ 1 (4) 不翻号,(17/3) = (2/3) = −1。(5/17):5 ≡ 1 (4),(17/5) = (2/5) = −1。合计 (+1)(−1)(−1) = +1。
解(约简路线) −15 ≡ 2 (17);(2/17):17 ≡ 1 (8) → +1。两路同归 ✓。
解 −15 ≡ 2 (17),即找 x2 ≡ 2:练 1.1 已备好——2 = 62,根 {6, 11}。验收:62 = 36 = 2·17 + 2 ✓;112 = 121 = 7·17 + 2 ✓。两条判定路线 + 一张旧户口册,三分钟结案。
解 判定:(5/19):5 ≡ 1 (4) 不翻号,(19/5) = (4/5) = +1(4 = 22)。有解。求根:19 ≡ 3 (4),魔杖 x = 5(19+1)/4 = 55 (mod 19):52 = 25 ≡ 6;54 = 36 ≡ 17 ≡ −2;55 = 54·5 = 17·5 = 85 = 4·19 + 9 ≡ 9。两根 {9, 10}。验收:92 = 81 = 4·19 + 5 ✓;102 = 100 = 5·19 + 5 ✓;和 19 ≡ 0、积 90 = 4·19 + 14 ≡ −5 ✓。
解 2 的幂 mod 19:2, 4, 8, 16, 32 ≡ 13, 26 ≡ 7, 14, 28 ≡ 9, 18, 36 ≡ 17, 34 ≡ 15, 30 ≡ 11, 22 ≡ 3, 6, 12, 24 ≡ 5——ind(5) = 16(0 起数:216 = 65536 = 3449·19 + 5 ✓,3449·19 = 65531,65536 − 65531 = 5)。x ≡ g16/2 = 28 = 256 = 13·19 + 9 ≡ 9 (19) ✓。两路线命中同一根:魔杖与指标法在 p ≡ 3 (4) 时是同一件事的两种讲法(ind(5) 偶 ⟺ 5 是 QR)。
解 11 ≡ 3 (4),−1 不是 QR(左补律),x2 + y2 ≡ 0 且 y ≠ 0 会给出 (x/y)2 ≡ −1 的矛盾。唯一解 (0, 0),解数 1。
解 17 ≡ 1 (4),x02 ≡ −1 有解(练 1.1:x0 = 4)。解集 = 直线 x ≡ 4y 与 x ≡ −4y 的并:每条线 p = 17 个点,交于原点,解数 2·17 − 1 = 33。抽验两支上的点:y = 1 → x = 4:42 + 1 = 17 ≡ 0 ✓;x = −4 ≡ 13:132 + 1 = 170 = 10·17 ✓。
解 p − 1 = 16 = 24·1:s = 4, q = 1。哨兵 z = 3:(3/17) 的判定——3 ≡ 3 (4),17 ≡ 1 (4) 不翻号,(17/3) = (2/3) = −1。z = 3 是 QNR ✓(亦可查练 1.1 户口册:3 不在 QR(17))。备料:c = zq = 3,初值 R = a(q+1)/2 = a1,t = aq = a,M = 4。
解 初值 R = 2, t = 2, M = 4。第一轮:找最小 i 使 t2i = 1——22 = 4 ≠ 1,24 = 16 ≡ −1 ≠ 1,28 = (24)2 ≡ 1 → i = 3;b = c2M−i−1 = 320 = 3;R ← 2·3 = 6;t ← 2·9 = 18 ≡ 1;M ← 3。第二轮:t = 1,停。根 R = 6:62 = 36 ≡ 2 (17) ✓,两根 {6, 11}。
解 先判 5:5 ≡ 1 (4),(5/17) = (17/5) = (2/5) = −1——5 恰好也是 QNR,做哨兵同样合格(哨兵只要求 QNR,不唯一)。一般地,若哨兵 z 是 QR,则 zq 落进 QR 的 2-幂塔内,t 的 2-阶永远降不到该降的位置,迭代不收敛——哨兵的 QNR 身份是「阶的燃料」:c = zq 的 2-阶恰为 2s,正好够把 t 一路压到 1。
解 判定:练 6.1 已给 (21/43) = +1(双翻号)。求根:43 ≡ 3 (4),魔杖 x = 21(43+1)/4 = 2111 (mod 43)。平方接力:212 = 441 = 10·43 + 11 ≡ 11;214 ≡ 112 = 121 = 2·43 + 35 ≡ 35 ≡ −8;218 ≡ (−8)2 = 64 ≡ 21。于是 2111 = 218·212·21 ≡ 21·11·21:21·11 = 231 = 5·43 + 16 ≡ 16,16·21 = 336 = 7·43 + 35 ≡ 35。x = 35。验收:352 = 1225 = 28·43 + 21 = 1204 + 21 ✓。两根 {35, 8}(8 = 43 − 35):82 = 64 = 43 + 21 ✓。和 43 ≡ 0、积 280 = 6·43 + 22 ≡ −21 ✓。
解 (33/43) = (3/43)(11/43)。(3/43) = −1(练 6.1)。(11/43):11 ≡ 3 (4),43 ≡ 3 (4),翻号:(11/43) = −(43/11) = −(10/11) = −(2/11)(5/11)。(2/11):11 ≡ 3 (8) → −1。(5/11):5 ≡ 1 (4),(11/5) = (1/5) = +1。故 (11/43) = −(−1)(+1) = +1。合计 (33/43) = −1:33 在 mod 43 开不出平方根。
习题课合上之前,把五类常见失分点归档,再用三个问题自测本章的承重结构。
本书以《九章算术》的一句「物不知数」开场,也愿以它的另一章收束。少广章记载了世界上最早的系统开方程序:「开方术」——置积为实,借一算,步步逼近,逐位定商。传世名题:「今有积五万五千二百二十五步,问为方几何?」答曰:二百三十五步——55 225 = 2352。刘徽注「开方除之」,又以出入相补给程序配上几何证明:那个「借算」上下跳动的方形图,与今天教科书的竖式开方一模一样。
1796 年 4 月 8 日,Gauss 的科学日记落下第一条记录:他发现了二次互反律的证明。此后一生他陆续给出 8 个证明;Eisenstein、Jacobi、Kummer、Frobenius、Kronecker……接棒者络绎不绝,如今收集到的证明已逾两百个。Kronecker 称之为「higher arithmetic 的宝石」(the precious gem of higher arithmetic),Gauss 本人则称之 aureum theorema——黄金定理。一条关于「平方身份」的定理,凭什么被捧了两百年?
因为它是一座桥头的界碑。表面看,它只说两素数的平方身份互相决定;往深处看,它宣告「素数并非孤岛」——每个素数都携带着关于其他素数的信息,而且这份信息精确到可以写成公式。Hilbert 在《数报告》(1897)里把它重述为「数域的 Galois 群与理想类群之间的对偶」,Artin(1927)把它推广成一般阿贝尔扩张的互反律——类域论的心脏;Langlands 纲领(1967 至今)则试图把这面镜子转向非交换的世界。两百年,一条定理从「数表里的规律」长成了「数学的宪法条款」。
本章围绕一个疑问展开——「谁是模 p 的平方?」——最终抵达两个素数之间的镜像法则。知识图谱:
三条延伸:
其一(从计算到结构):没有互反律,判 (p/q) 是零散的查表;有了它,判定成为一条可预测的流水线。结构不改变事实,但改变事实的「可计算性」——这是全书反复出现的主题的最后一章变奏。
其二(镜子的失真也是信息):双双 ≡ 3 (4) 时的翻号不是缺陷,而是定律的一部分——失真本身被公式精确记录。数学中的对称从不是「处处相同」,而是「形变有法」。
其三(生长的对称):从二次到三次、四次互反(ℤ[ω]、ℤ[i] 的世界),再到 Artin 的类域论与 Langlands 纲领——「互反」是数学中最能自我推广的思想之一。每换一个世界,镜子换一副材质,法则的骨架不变。
任务 独立重建 5.11 的证明,五关闯将,每关附自查点。目标:不看书,把 (q/p)(p/q) = (−1)((p−1)/2)((q−1)/2) 从零推出(设 p < q)。
第一关(过线计数) 复述 Gauss 引理并证「绝对值互异」:折算 qk(k = 1, …, (p−1)/2)到 (−p/2, p/2),绝对值两两不同的理由写满三行。自查:消去 q 后得 k ≡ ±j (mod p);为什么 k ≡ −j 不可能在 1 与 (p−1)/2 之间发生?(和不超过 p − 1。)
第二关(负号即乘积) 对两边取积,证明 q(p−1)/2·((p−1)/2)! ≡ (−1)μ1·((p−1)/2)!,从而 (q/p) = (−1)μ1。自查:μ1 是「折出负号」的个数;消去阶乘的合法性来自 p ∤ ((p−1)/2)!。
第三关(格点翻译) 证明:qk mod p > p/2 ⟺ 存在整数 m(1 ≤ m ≤ (q−1)/2)使 mp < qk − p/2 < (m+1)p……写成格点语言:μ1 = 长方形 {1 ≤ k ≤ (p−1)/2, 1 ≤ m ≤ (q−1)/2} 内直线 m = (q/p)k 下方的格点数。自查:m 的上界为什么恰是 (q−1)/2?(qk < qp/2 蕴含 m < q/2。)
第四关(对偶计数) 对称地证明 μ2(p 过 q/2 线的次数)= 同一长方形内直线上方的格点数,且直线上无格点(p | qk 不可能)。自查:把 qk mod q 的角色倒过来时,长方形的两个坐标轴各对应哪个变量?坐标系换名后「上下」如何对应?
第五关(合拢) μ1 + μ2 = ((p−1)/2)((q−1)/2),两式相乘收工;再用 p = 5, q = 7 与 p = 3, q = 7 各做一次全流程数值验证。自查:(5/7) = −1、(7/5) = (2/5) = −1,乘积 +1,指数 2·3 = 6 偶 ✓;(3/7) = −1、(7/3) = +1,乘积 −1,指数 1·3 = 3 奇 ✓。
任务 重建 5.12 的代数路线,五关闯将。目标:证明 Zolotarev 引理 ε(σ_a) = (a/p),再用 Frobenius 网格导出互反律。
第一关(符号的乘性) 证明置换符号的复合乘性:ε(σ1σ2) = ε(σ1)ε(σ2)(每个对换分解的奇偶在复合下相加)。自查:把 σ1σ2 写成对换乘积时,对换个数模 2 是良定义的——这需要先证「恒等置换的对换个数为偶」。
第二关(哨兵) 验证 σ1 为恒等(ε = +1);σ−1 是 (p−1)/2 个对换 x ↔ −x,故 ε(σ−1) = (−1)(p−1)/2 = (−1/p)。自查:σ−1 的不动点只有 0;其余 (p−1)/2 对成员两两互换。
第三关(主引擎) 证明 ε(σ_a) = (−1)μ(μ 为 Gauss 引理的过线数)。路线:把 F_p^× 排成 1, 2, …, (p−1)/2, −(p−1)/2, …, −1 的次序;σ_a 先把绝对值重排(这个「绝对值置换」在上下两半同步进行,其符号为平方数,是偶的),再把 μ 个元素翻入负半带(每翻一个是一次对换)。自查:「绝对值置换是偶的」的精确表述——它在正半带与负半带各执行同一个置换,总符号是「符号的平方」。
第四关(Frobenius 网格) 在 ℤ/p × ℤ/q 网格上考察「乘 p 改列、乘 q 改行」的复合置换,证明其符号 = ε(乘 p on ℤ/q)·ε(乘 q on ℤ/p)·(行内循环移位贡献);数出移位贡献的奇偶恰为 ((p−1)/2)((q−1)/2) mod 2。自查:把网格拉直成 pq 个元素的序列,列移位是若干 q-循环,其符号 (−1)(q−1)·次数 的总次数由格点计数(挑战一第四关的同款长方形!)给出——两条路线在此握手。
第五关(合拢) 由第三关与第四关拼出 (p/q)(q/p) = (−1)((p−1)/2)((q−1)/2);再用 5.10 的互查表抽两对验证。自查:整个证明里乘法群的循环性用在哪里?(σ_a 都是 F_p 的置换这一事实本身——乘法是双射。)
实验设计 把本章的判定流水线写成十二行伪代码,对任意素数对 (p, q) 自动对账:分别用「欧拉判据」与「互反律 + 补律」计算 (p/q),核对两者一致。
运行记录 对 p, q ≤ 47 的全部 15 对素数:15/15 对账通过;继续放大至 p, q ≤ 2000(303 对素数、45 753 对组合):零反例。直接值与流水线值在同一对上从不打架——「定理」二字由此从纸面走进机器。