相关笔记: 3.3 算法复杂度分析 | 4.2 整数表示与算法
概览
本节系统介绍了数论的基础概念——整除与模运算。整除关系是整数之间最基本的二元关系之一,由此引出的带余除法(Division Algorithm)是后续所有数论结果的基础。在此基础上,我们引入了同余(congruence)的概念,它由伟大的数学家高斯(Gauss)在18世纪末系统发展。同余关系是整数集上的等价关系,将整数划分为同余类,并赋予模 上的算术运算,构成一个交换环 。
- 整除 :存在整数 使得 ,是整数间的核心二元关系
- 带余除法:,其中 ,保证商和余数的唯一性
- 模运算 : 除以 的余数,即
- 同余 :,等价于
- 同余关系满足自反性、对称性、传递性,是等价关系
- 同余对加法和乘法保持封闭:,
- 同余类 构成交换环,但乘法逆元不一定存在
一、知识结构总览
graph TB A["4.1 整除与模运算<br/>Divisibility and Modular Arithmetic"] --> B["整除 Divisibility"] A --> C["带余除法 Division Algorithm"] A --> D["模运算 Modular Arithmetic"] A --> E["同余 Congruence"] A --> F["模m算术 Arithmetic Modulo m"] B --> B1["定义:a|b ⟺ ∃c(b=ac)"] B --> B2["Theorem 1:整除的基本性质"] B --> B3["Corollary 1:线性组合的整除性"] C --> C1["Theorem 2:a = dq + r"] C --> C2["div 和 mod 运算"] C --> C3["负数的余数非负"] D --> D1["a mod m = a - m⌊a/m⌋"] D --> D2["mod 是函数,非关系"] E --> E1["定义:a≡b mod m ⟺ m|(a-b)"] E --> E2["Theorem 3:同余 ⟺ 余数相同"] E --> E3["Theorem 4:a≡b ⟺ a=b+km"] E --> E4["Theorem 5:加减乘保持同余"] E --> E5["Corollary 2:mod函数的运算规则"] E --> E6["等价关系:自反/对称/传递"] F --> F1["Zm = {0,1,...,m-1}"] F --> F2["+m 和 ·m 运算"] F --> F3["封闭/结合/交换/单位元/逆元"] F --> F4["分配律"] F --> F5["交换环 Commutative Ring"]
二、核心思想
核心思想
本节的核心思想是同余(congruence modulo ):通过关注整数除以 的余数,将无穷的整数集压缩为有限的 ,并在其上定义封闭的算术运算。同余的本质是整数集上的等价关系——它将所有相差 的整数归为同一类(同余类),从而将”无穷”化为”有限”。这种”化无穷为有限”的思想贯穿整个数论与密码学,是RSA加密、哈希函数、校验码等应用的数学根基。
1. 整除(Divisibility)
整除(Definition 1)
设 和 为整数且 。若存在整数 使得 ,则称 整除 ,记作 。
- 此时称 是 的因子(factor)或除数(divisor), 是 的倍数(multiple)
- 用量词表示:,论域为整数集
- 若 不整除 ,记作
判断整除关系
- ,因为 不是整数
- ,因为 是整数
- 不超过 的正整数中,被 整除的有 个
整除的基本性质(Theorem 1)
设 为整数,。则:
- (i) 若 且 ,则
- (ii) 若 ,则对所有整数 ,
- (iii) 若 且 ,则 (整除的传递性)
证明 (i):由 和 ,存在整数 使得 ,。故 ,因此 。
证明 (ii):由 ,存在整数 使得 。故 ,因此 。
证明 (iii):由 和 ,存在整数 使得 ,,因此 。
线性组合的整除性(Corollary 1)
若 为整数,,且 ,,则对所有整数 ,。
证明:由 Theorem 1(ii), 且 。由 Theorem 1(i),。
2. 带余除法(The Division Algorithm)
带余除法(Theorem 2)
设 为整数, 为正整数。则存在唯一的整数 和 ,满足 ,使得
- 称为除数(divisor), 称为被除数(dividend)
- 称为商(quotient), 称为余数(remainder)
- 记号:,
- 注意:,
带余除法实例
- ,故 ,
- ,故 ,
- 注意: 而非 ,因为余数必须满足
注意
带余除法中的余数 始终非负()。即使被除数为负数,余数也不能为负。例如 不是合法的带余除法形式,因为 不满足 。
3. 同余(Congruence)
同余(Definition 3)
设 为整数, 为正整数。若 ,则称 同余于 模 ,记作 。
- 是整数集上的二元关系(relation)
- 是整数集上的函数(function)
- 两者密切相关但本质不同:前者是关系,后者是函数
同余的等价刻画(Theorem 3)
设 为整数, 为正整数。则
即 与 同余模 当且仅当它们除以 的余数相同。
同余的等价形式(Theorem 4)
设 为正整数。整数 与 同余模 当且仅当存在整数 使得 。
证明:
- () 若 ,由定义 ,故存在整数 使得 ,即 。
- () 若 ,则 ,故 ,即 。
同余的等价关系性质
同余关系 是整数集上的等价关系:
- 自反性:(因为 )
- 对称性:若 ,则 (因为 )
- 传递性:若 且 ,则 (因为 且 )
4. 同余的运算性质
同余的加法与乘法保持性(Theorem 5)
设 为正整数。若 且 ,则
证明:由 和 ,根据 Theorem 4,存在整数 使得 ,。故 因此 且 。
mod 函数的运算规则(Corollary 2)
设 为正整数, 为整数。则
证明:由 和 ,根据 Theorem 5: 再由 Theorem 3 即得等式。
模运算计算
因为 且 ,由 Theorem 5:
同余运算的陷阱
- 同余不能随意除:若 ,不能推出 (除非 )
- 例如:(即 ),但
5. 模 算术(Arithmetic Modulo )
上的运算
定义 上的两种运算:
- 加法:
- 乘法:a \cdot_m b = (a \cdot b) \bmod m$
这两种运算满足以下性质:
性质 加法 乘法 封闭性 结合律 交换律 单位元 () () 逆元 是 的加法逆元 不一定存在 分配律
上的运算
抽象代数视角
配合加法 构成交换群(commutative group),配合加法和乘法 构成交换环(commutative ring)。注意:乘法逆元不一定存在(例如 在 中没有乘法逆元),因此 一般不是域。只有当 为素数时, 才是域。
三、补充理解与易混淆点
补充理解
补充1:同余概念的历史渊源
同余的概念由德国数学家卡尔-弗里德里希-高斯(Carl Friedrich Gauss, 1777—1855)在18世纪末系统发展。高斯在其1801年出版的划时代著作《算术研究》(Disquisitiones Arithmeticae)中,首次将同余符号 引入数学,并建立了模运算的完整理论体系。高斯被誉为”数学王子”,他曾说:“数学是科学的皇后,而数论是数学的皇后。“同余理论的建立使数论从零散的命题集合变为一个结构化的理论体系,为后来的代数数论、密码学等奠定了基础(Gauss, 1801; Ireland & Rosen, 1990)。
- Disquisitiones Arithmeticae (维基百科) — 高斯《算术研究》的历史背景与影响
- Modular Arithmetic (Khan Academy) — 模运算的直观讲解
来源:Gauss, C. F. (1801). Disquisitiones Arithmeticae. Leipzig: Fleischer, Article 1–2. 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 4.1.
补充2:模运算在计算机科学中的核心地位
模运算在计算机科学中无处不在。在编程语言中,
%运算符(C/C++/Java/Python)或mod运算符(BASIC/SQL)实现了模运算。但需注意:不同语言对负数的模运算结果可能不同。例如,Python 中 (数学定义),而 C/C++ 中 (截断除法)。在密码学中,RSA 加密的核心运算 依赖模幂运算;在哈希表中,hash(key) = key % table_size是最常用的哈希函数;在循环队列、时钟运算、日历计算中,模运算同样是基础工具(Knuth, 1997, Vol. 2, Sec. 4.3.2)。
- Modular Arithmetic (Brilliant) — 模运算的交互式教程
- C vs Python modulo for negative numbers — 不同语言模运算的差异
来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 4.1. 来源:Stinson, D. R. (2018). Cryptography: Theory and Practice (4th ed.), CRC Press, Chapter 5.
易混淆点
误区1: 与 的混淆
- ❌ 认为 和 是同一回事
- ✅ 是一个关系(relation),表示 , 和 可以是任意整数
- ✅ 是一个函数(function),返回值范围是
- ✅ 两者的联系:
- 例如: 是正确的(因为 ),但 (不是 )
误区2:同余式两边不能随意除以公因子
- ❌ 从 直接推出
- ✅ 正确做法:
- 例如:,两边除以 得 ,但
- ✅ 如果 (即 与 互素),则可以安全地除以
- 这个性质将在后续4.3 素数与最大公约数和4.4 解同余方程中详细讨论
四、习题精选
习题概览
题号范围 核心考点 难度 1-2 判断整除关系 ⭐ 3-4 证明 Theorem 1 的 (ii)(iii) ⭐⭐ 5-7 整除关系的推导 ⭐⭐ 8 反例: 或 ⭐⭐ 9-12 整除与奇偶性 ⭐⭐ 13-14 计算 div 和 mod ⭐ 15-16 时钟问题(模12/模24) ⭐⭐ 17-18 模运算求值 ⭐⭐ 19-20 div 运算的性质 ⭐⭐⭐ 21-22 证明 Theorem 3 ⭐⭐ 23-25 mod 运算的公式推导 ⭐⭐⭐ 26-29 求模运算值 ⭐ 30-31 在指定范围内找同余整数 ⭐⭐ 32-33 列举同余的整数 ⭐ 34-35 判断同余关系 ⭐ 36-39 复合模运算求值 ⭐⭐ 40-43 同余性质的证明与反例 ⭐⭐⭐ 44-47 平方数的同余性质 ⭐⭐⭐ 48-50 证明 的代数性质 ⭐⭐⭐⭐ 51-52 构造 的运算表 ⭐⭐
题1:判断整除关系
题目
判断 是否整除下列各数:(a) ;(b) ;(c) ;(d) 。
解答
(a) ,是整数,故 。
(b) ,不是整数,故 。
(c) ,是整数,故 。
(d) ,不是整数,故 。
题2:计算 div 和 mod
题目
求下列除法的商和余数:(a) 除以 ;(b) 除以 ;(c) 除以 。
解答
(a) ,故 ,。
(b) ,故 ,。
(c) ,故 ,。
题3:同余运算求值
题目
设 且 。求满足 的整数 ,使得 。
解答
。
故 。
题4:证明同余的传递性
题目
证明:若 且 ,则 。
解答
由 ,存在整数 使得 。
由 ,存在整数 使得 。
两式相加:,即 。
因为 是整数,故 ,即 。
解题思路提示
同余证明的核心方法论:
- 利用定义:
- 利用余数:
- 利用运算保持性:Theorem 5 保证加法和乘法保持同余
- 反证法:证明同余不成立时,假设成立后推出矛盾
- 注意陷阱:同余式不能随意除以公因子,除非该因子与模互素
题5:复合模运算求值
题目
求 的值。
解答
第一步:计算 。 ,,故 。
第二步:计算 。 ,,故 。
因此 。
五、视频学习指南
视频资源
六、教材原文
教材原文
“The part of mathematics devoted to the study of the set of integers and their properties is known as number theory. In this chapter we will develop some of the important concepts of number theory including many of those used in computer science.”
“The great German mathematician Karl Friedrich Gauss developed the concept of congruences at the end of the eighteenth century. The notion of congruences has played an important role in the development of number theory.”
“You cannot always divide both sides of a congruence by the same number!”