数论之基础
本文对于数论的开头部分做一个简介。
符号
整除/同余理论常见符号
- 整除符号:
,表示 整除 ,即 是 的因数。 - 取模符号:
,表示 除以 得到的余数。 - 互质符号:
,表示 互质。 - 最大公约数:
,在无混淆意义的时侯可以写作 。 - 最小公倍数:
,在无混淆意义的时侯可以写作 。
数论函数常见符号
求和符号:
•
•
•
求积符号:
•
•
•
在行间公式中,求和符号与求积符号的上下条件会放到符号的上面和下面,这一点要注意。
其他常见符号
- 阶乘符号
, 表示 。特别地, 。 - 向下取整符号:
,表示小于等于 的最大的整数。常用于分数,比如分数的向下取整 。 - 向上取整符号:
,与向下取整符号相对,表示大于等于 的最小的整数。
整除
整除的定义: 设 𝑎, 𝑏 ∈ Z,𝑎 ≠ 0。如果 ∃𝑞 ∈ Z,使得 𝑏 = 𝑎𝑞,那么就说 𝑏 可被 𝑎 整除,记作 𝑎 ∣ 𝑏,且称 𝑏 是 𝑎 的倍数,𝑎 是 𝑏 的约数(因数)。
𝑏 不被 𝑎 整除记作 𝑎 ∤ 𝑏。
整除的性质:
• 𝑎 ∣ 𝑏 ⟺ −𝑎 ∣ 𝑏 ⟺ 𝑎 ∣ −𝑏 ⟺ |𝑎| ∣ |𝑏|
• 𝑎 ∣ 𝑏 ∧ 𝑏 ∣ 𝑐 ⟹ 𝑎 ∣ 𝑐
• 𝑎 ∣ 𝑏 ∧ 𝑎 ∣ 𝑐 ⟺ ∀𝑥, 𝑦 ∈ Z, 𝑎 ∣ (𝑥𝑏 + 𝑦𝑐)
• 𝑎 ∣ 𝑏 ∧ 𝑏 ∣ 𝑎 ⟹ 𝑏 = ±𝑎
• 设 𝑚 ≠ 0,那么 𝑎 ∣ 𝑏 ⟺ 𝑚𝑎 ∣ 𝑚𝑏。
• 设 𝑏 ≠ 0,那么 𝑎 ∣ 𝑏 ⟹ |𝑎| ≤ |𝑏|。
• 设 𝑎 ≠ 0, 𝑏 = 𝑞𝑎 + 𝑐,那么 𝑎 ∣ 𝑏 ⟺ 𝑎 ∣ 𝑐。
0 是所有非 0 整数的倍数。对于整数 𝑏 ≠ 0,𝑏 的约数只有有限个。
显然约数(显然因数):对于整数 𝑏 ≠ 0,±1、±𝑏 是 𝑏 的显然约数。当 𝑏 = ±1 时,𝑏 只有两个显然约数。
对于整数 𝑏 ≠ 0,𝑏 的其他约数称为真约数(真因数、非显然约数、非显然因数)。
约数的性质:
• 设整数 𝑏 ≠ 0。当 𝑑 遍历 𝑏 的全体约数的时候,
• 设整数 𝑏 > 0,则当 𝑑 遍历 𝑏 的全体正约数的时候,
带余数除法
余数的定义: 设 𝑎, 𝑏 为两个给定的整数,𝑎 ≠ 0。设 𝑑 是一个给定的整数。那么,一定存在唯一的一对整数 𝑞 和 𝑟,满足 𝑏 = 𝑞𝑎 + 𝑟, 𝑑 ≤ 𝑟 < |𝑎| + 𝑑。
无论整数 𝑑 取何值,𝑟 统称为余数。𝑎 ∣ 𝑏 等价于 𝑎 ∣ 𝑟。
一般情况下,𝑑 取
余数往往还有两种常见取法:
绝对最小余数:𝑑 取 𝑎 的绝对值的一半的相反数。即
最小正余数:𝑑 取 1。即 𝑏 = 𝑞𝑎 + 𝑟, 1 ≤ 𝑟 < |𝑎| + 1。
带余数除法的余数只有最小非负余数。如果没有特别说明,余数总是指最小非负余数。
余数的性质:
• 任一整数被正整数 𝑎 除后,余数一定是且仅是 0 到 (𝑎 − 1) 这 𝑎 个数中的一个。
• 相邻的 𝑎 个整数被正整数 𝑎 除后,恰好取到上述 𝑎 个余数。特别地,一定有且仅有一个数被 𝑎 整除。
最大公约数与最小公倍数
关于公约数、公倍数、最大公约数与最小公倍数,四个名词的定义,这里暂时不赘述,详情可参见别的博客。
互素
两个整数互素(既约)的定义:若 gcd(𝑎1 , 𝑎2 ) = 1,则称 𝑎1 和 𝑎2 互素(既约)。
多个整数互素(既约)的定义:若 gcd(𝑎1 , … , 𝑎𝑘 ) = 1,则称 𝑎1 , … , 𝑎𝑘 互素(既约)。
多个整数互素,不一定两两互素。例如 6、10 和 15 互素,但是任意两个都不互素。
互素的性质与最大公约数理论:裴蜀定理(Bézout’s identity)。见 裴蜀定理。
辗转相除法
辗转相除法是一种算法,也称 Euclid 算法。
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); }
素数与合数
设整数 𝑝 ≠ 0, ±1。如果 𝑝 除了显然约数外没有其他约数,那么称 𝑝 为素数(不可约数)。
若整数 𝑎 ≠ 0, ±1 且 𝑎 不是素数,则称 𝑎 为合数。
𝑝 和 −𝑝 总是同为素数或者同为合数。如果没有特别说明,素数总是指正的素数。
整数的因数是素数,则该素数称为该整数的素因数(素约数)。
素数与合数的简单性质:
• 大于 1 的整数 𝑎 是合数,等价于 𝑎 可以表示为整数 𝑑 和 𝑒(1 < 𝑑, 𝑒 < 𝑎)的乘积。
• 如果素数 𝑝 有大于 1 的约数 𝑑,那么 𝑑 = 𝑝。
• 大于 1 的整数 𝑎 一定可以表示为素数的乘积。
• 对于合数 𝑎,一定存在素数 𝑝 ≤ √𝑎 使得 𝑝 ∣ 𝑎。
• 素数有无穷多个。
• 所有大于 3 的素数都可以表示为 6𝑛 ± 1 的形式。
算术基本定理
算术基本引理:
设 𝑝 是素数,
算术基本引理是素数的本质属性,也是素数的真正定义。
上文给出的素数定义,事实上叫做不可约数,素数是不可约数的子集。在一些整环中,不可约数和素数是两个不同的集合,在两集合不相等的整环中,算术基本定理不成立。由于整数范围内两个集合完全一致,因此可以不做区分。
算术基本定理(唯一分解定理):
设正整数 𝑎,那么必有表示:
其中
标准素因数分解式:
将上述表示中,相同的素数合并,可得:
称为正整数 𝑎 的标准素因数分解式。
算术基本定理和算术基本引理,两个定理是等价的。
同余
同余的定义:设整数 𝑚 ≠ 0。若 𝑚 ∣ (𝑎 − 𝑏),称 𝑚 为模数(模),𝑎 同余于 𝑏 模 𝑚,𝑏 是 𝑎 对模 𝑚 的剩余。记作
否则,𝑎 不同余于 𝑏 模 𝑚,𝑏 不是 𝑎 对模 𝑚 的剩余。记作
这样的等式,称为模 𝑚 的同余式,简称同余式。
根据整除的性质,上述同余式也等价于
如果没有特别说明,模数总是正整数。
式中的 𝑏 是 𝑎 对模 𝑚 的剩余,这个概念与余数完全一致。通过限定 𝑏 的范围,相应的有 𝑎 对模 𝑚 的最小非负剩余、绝对最小剩余、最小正剩余。
同余的性质:
• 自反性:
• 对称性:若
• 传递性:若
• 线性运算:若 𝑎, 𝑏, 𝑐, 𝑑 ∈ Z, 𝑚 ∈ N∗ ,
–
–
• 若 𝑎, 𝑏 ∈ Z, 𝑘, 𝑚 ∈ N∗ ,
• 若 𝑎, 𝑏 ∈ Z, 𝑑, 𝑚 ∈ N∗ , 𝑑 ∣ 𝑎, 𝑑 ∣ 𝑏, 𝑑 ∣ 𝑚,则当
• 若 𝑎, 𝑏 ∈ Z, 𝑑, 𝑚 ∈ N∗ , 𝑑 ∣ 𝑚,则当
• 若 𝑎, 𝑏 ∈ Z, 𝑑, 𝑚 ∈ N∗,则当
还有性质是乘法逆元。
C/C++ 的整数除法和取模运算
在 C/C++ 中,整数除法和取模运算,与数学上习惯的取模和除法不一致。
对于所有标准版本的 C/C++,规定在整数除法中:
-
当除数为 0 时,行为未定义;
-
否则
的运算结果与 a 相等。
也就是说,取模运算的符号取决于除法如何取整;而除法如何取整,这是实现定义的(由编译器决定)。
从 C99 和 C++11 标准版本起,规定商向零取整(舍弃小数部分);取模的符号即与被除数相同。从此以下运算结果保证为真:
5 % 3 == 2;
5 % -3 == 2;
-5 % 3 == -2;
-5 % -3 == -2.
数论函数
数论函数指定义域为正整数的函数。数论函数也可以视作一个数列。
积性函数
定义
若函数
若函数
性质
若 𝑓(𝑥) 和 𝑔(𝑥) 均为积性函数,则以下函数也为积性函数:
设
若
若
例子
• 单位函数:
• 恒等函数:
• 常数函数:
• 除数函数:
• 欧拉函数:
• 莫比乌斯函数:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】