抽象代数的研究对象是代数结构,而整数集 Z\mathbb Z 是最经典、最基础的代数结构(环)。
许多抽象概念(如理想、生成元)的直觉都源于整数。
本节将回顾有理整数环 Z\mathbb Z 的基本性质,为后续的群论与环论打下基础。

# 最大公因数与最小公倍数

在整数论中,最大公约数与最小公倍数是两个重要的概念
取整数 a,ba,b(不全为 0),若整数 dd 满足

  • dad \mid a
  • dbd \mid b
    则称 dda,ba,b 的一个 公约数

在所有公约数中,最大的那个称为 a,ba,b最大公约数 (Greatest Common Divisor, GCD)「最大公約数」,记作 gcd(a,b)\gcd(a,b)

同样地,取整数 m,nm,n,若整数 ll 满足

  • mlm \mid l
  • nln \mid l
    则称 llm,nm,n 的一个 公倍数

在所有正的公倍数中,最小的那个称为 m,nm,n最小公倍数 (Least Common Multiple, LCM)「最小公倍数」,记作 lcm(m,n)\mathrm{lcm}(m,n)

它们之间满足关系:

ab=gcd(a,b)lcm(a,b)|ab| = \gcd(a,b) \cdot \mathrm{lcm}(a,b)

# Euclidean 算法

Euclidean 算法(辗转相除法)是一种用于计算两个整数的最大公约数的有效算法,记为 Euclidean 算法 (Euclidean Algorithm)「ユークリッドの互除法」
其原理基于以下性质:

命题
a,ba,b 为非负整数,且 b0b \neq 0,则

gcd(a,b)=gcd(b,amodb)\gcd(a,b) = \gcd(b,a \bmod b)

证明

d=gcd(a,b)d = \gcd(a,b),则 dad \mid adbd \mid b
由于 amodb=aa/bba \bmod b = a - \lfloor a/b \rfloor b,即 amodba \bmod baabb 的线性组合
所以 d(aa/bb)d \mid (a - \lfloor a/b \rfloor b),即 d(amodb)d \mid (a \bmod b)
因此,ddbbamodba \bmod b 的公约数,所以 dgcd(b,amodb)d \leq \gcd(b, a \bmod b)

反之,设 d=gcd(b,amodb)d' = \gcd(b,a \bmod b),则 dbd' \mid bd(amodb)d' \mid (a \bmod b)
由于 a=a/bb+(amodb)a = \lfloor a/b \rfloor b + (a \bmod b)
所以 d(a/bb+(amodb))d' \mid (\lfloor a/b \rfloor b + (a \bmod b)),即 dad' \mid a
因此,dd'aabb 的公约数,所以 dgcd(a,b)d' \leq \gcd(a, b)

综上 d=dd = d',即 gcd(a,b)=gcd(b,amodb)\gcd(a,b) = \gcd(b,a \bmod b)

Euclidean 算法的步骤如下

  1. 给定两个非负整数 aabb,其中 aba \geq b
  2. 计算 aa 除以 bb 的余数 rr
  3. 如果 r=0r = 0,则 gcd(a,b)=b\gcd(a,b) = b,算法结束
  4. 否则,令 a=ba = bb=rb = r,重复步骤 2 和 3

通过不断地用较小的数去除较大的数,并取余数,最终会得到最大公约数

示例
使用 Euclidean 算法计算 gcd(484,186)\gcd(484,186)

484=2×186+112186=1×112+74112=1×74+3874=1×38+3638=1×36+236=18×2+0\begin{aligned} 484 &= 2 \times 186 + 112 \\ 186 &= 1 \times 112 + 74 \\ 112 &= 1 \times 74 + 38 \\ 74 &= 1 \times 38 + 36 \\ 38 &= 1 \times 36 + 2 \\ 36 &= 18 \times 2 + 0 \end{aligned}

余数为 0 时的除数即为最大公约数,所以 gcd(484,186)=2\gcd(484,186) = 2

# 扩展 Euclidean 算法

我们不仅关心最大公约数是多少,还关心它如何通过原数字线性组合得到。这引出了数论中极为重要的 Bézout 定理 (Bézout's Identity)「ベズーの等式」

定理 Bézout 定理
对于不全为 0 的整数 a,ba, b,存在整数 x,yx, y 使得

ax+by=gcd(a,b)ax + by = \gcd(a, b)

扩展 Euclidean 算法可以找到满足上述等式的整数 x,yx,y
尤其在求解线性同余方程时非常有用,特别是对于互质问题 gcd(a,b)=1    ax+by=1\gcd(a,b) = 1 \iff ax + by = 1

通常利用矩阵行变换代为计算,步骤如下:

  1. 给定两个非负整数 aabb,其中 aba \geq b
  2. 设定初始矩阵

(10a01b)\begin{pmatrix} 1 & 0 & a \\ 0 & 1 & b \\ \end{pmatrix}

  1. 通过反复行基本变换,每次用上一行减去下一行乘以商 qq,使得第三列的数值模拟 Euclidean 算法的取余过程
  2. 直到某一行第三列为 gcd(a,b)\gcd(a,b),而另一行第三列为 00
  3. 此时非零行对应的第一、二列即为所求的 x,yx, y

示例
使用扩展 Euclidean 算法计算 gcd(484,186)\gcd(484,186) 并找到整数 x,yx,y 使得 484x+186y=gcd(484,186)484x + 186y = \gcd(484,186)

初始矩阵

(1048401186)\begin{pmatrix} 1 & 0 & 484 \\ 0 & 1 & 186 \\ \end{pmatrix}

执行行变换(R1R1qR2R_1 \leftarrow R_1 - q R_2 等):

  1. 484÷186=2112484 \div 186 = 2 \dots 112

(12(0)02(1)4842(186)01186)=(1211201186)\begin{pmatrix} 1 - 2(0) & 0 - 2(1) & 484 - 2(186) \\ 0 & 1 & 186 \end{pmatrix} = \begin{pmatrix} 1 & -2 & 112 \\ 0 & 1 & 186 \end{pmatrix}

  1. 186÷112=174186 \div 112 = 1 \dots 74

(1211201(1)11(2)1861(112))=(121121374)\begin{pmatrix} 1 & -2 & 112 \\ 0 - 1(1) & 1 - 1(-2) & 186 - 1(112) \end{pmatrix} = \begin{pmatrix} 1 & -2 & 112 \\ -1 & 3 & 74 \end{pmatrix}

  1. 112÷74=138112 \div 74 = 1 \dots 38

(11(1)21(3)381374)=(25381374)\begin{pmatrix} 1 - 1(-1) & -2 - 1(3) & 38 \\ -1 & 3 & 74 \end{pmatrix} = \begin{pmatrix} 2 & -5 & 38 \\ -1 & 3 & 74 \end{pmatrix}

  1. 74÷38=13674 \div 38 = 1 \dots 36

(253811(2)31(5)36)=(25383836)\begin{pmatrix} 2 & -5 & 38 \\ -1 - 1(2) & 3 - 1(-5) & 36 \end{pmatrix} = \begin{pmatrix} 2 & -5 & 38 \\ -3 & 8 & 36 \end{pmatrix}

  1. 38÷36=1238 \div 36 = 1 \dots 2

(21(3)51(8)23836)=(51323836)\begin{pmatrix} 2 - 1(-3) & -5 - 1(8) & 2 \\ -3 & 8 & 36 \end{pmatrix} = \begin{pmatrix} 5 & -13 & 2 \\ -3 & 8 & 36 \end{pmatrix}

此时第一行第三列出现了 2=gcd(484,186)2 = \gcd(484, 186)
(若继续做一步,第二行将变为 (932420)\begin{pmatrix}-93 & 242 & 0\end{pmatrix},对应 93×484+242×186=0-93 \times 484 + 242 \times 186 = 0

所以 gcd(484,186)=2\gcd(484,186) = 2,且满足方程的解为 x=5,y=13x=5, y=-13
验证:4845+186(13)=24202418=2484 \cdot 5 + 186 \cdot (-13) = 2420 - 2418 = 2

# 同余方程

同余关系是一种在整数上的等价关系,为整数论的核心分析要素。

定义
取整数 m1m \geq 1
若整数 a,ba,b 满足:aba-b 能被 mm 整除(即 m(ab)m \mid (a-b)
则称 aabb 关于模 mm 同余 (Congruent modulo mm)「mm を法として合同」,记作

ab(modm)a \equiv b \pmod{m}

同余关系具有以下性质:
ab(modm), ab(modm)a \equiv b \pmod{m},\ a' \equiv b' \pmod{m},则有

  • a+ab+b(modm)a + a' \equiv b + b' \pmod{m} \quad
  • aabb(modm)a a' \equiv b b' \pmod{m} \quad

利用同余性质,可以实现快速判断一些数字是不是具有因数关系:

  • 模 9 同余101(mod9)    10k1(mod9)10 \equiv 1 \pmod 9 \implies 10^k \equiv 1 \pmod 9。一个数模 9 同余于其各位数字之和。
  • 模 11 同余101(mod11)    10k(1)k(mod11)10 \equiv -1 \pmod{11} \implies 10^k \equiv (-1)^k \pmod{11}。一个数模 11 同余于其奇数位数字和与偶数位数字和的差。

同余方程指的是形如

f(x)0(modm)f(x) \equiv 0 \pmod{m}

的方程,其中 f(x)f(x) 为整数系数多项式。
x0x_0 是方程的解,则 x0+kmx_0 + km 也是解。

其中,针对一次形式的 线性同余方程

axb(modm)ax \equiv b \pmod{m}

其解的存在性与结构由以下命题给出:

命题
线性同余方程 axb(modm)ax \equiv b \pmod{m} 有解的充分必要条件是 gcd(a,m)b\gcd(a,m) \mid b
特别地,若 gcd(a,m)=1\gcd(a,m) = 1,则该方程在模 mm 意义下有唯一解。

证明

d=gcd(a,m)d = \gcd(a,m),则存在整数 a,ma', m' 使得 a=da,m=dma = da', m = dm',且 gcd(a,m)=1\gcd(a', m') = 1
方程 axb(modm)ax \equiv b \pmod{m} 等价于 daxb(moddm)da'x \equiv b \pmod{dm'},即 daxb=dmkda'x - b = dm'k,化简得到 axmk=b/da'x - m'k = b/d
由于 gcd(a,m)=1\gcd(a', m') = 1,根据 Bézout 定理,存在整数 x0,k0x_0, k_0 使得 ax0mk0=1a'x_0 - m'k_0 = 1
将等式两边乘以 b/db/d,得到 a(x0b/d)m(k0b/d)=b/da'(x_0 \cdot b/d) - m'(k_0 \cdot b/d) = b/d,即 ax1mk1=b/da'x_1 - m'k_1 = b/d,其中 x1=x0b/d,k1=k0b/dx_1 = x_0 \cdot b/d, k_1 = k_0 \cdot b/d
因此,x=x1x = x_1 是方程 axb(modm)ax \equiv b \pmod{m} 的一个解。
反之,若 x=x1x = x_1 是方程的一个解,则 ax1b(modm)a x_1 \equiv b \pmod{m},即 ax1b=mka x_1 - b = m k,化简得到 ax1mk=ba x_1 - m k = b
由于 a=da,m=dma = da', m = dm',所以 dax1dmk=bd a' x_1 - d m' k = b,即 d(ax1mk)=bd (a' x_1 - m' k) = b,因此 dbd \mid b
\square

解线性同余方程实际上是在利用扩展 Euclidean 算法寻找 aa 在模 mm 下的逆元。

示例
解线性同余方程 3x4(mod7)3x \equiv 4 \pmod{7} \quad

由于 gcd(3,7)=1\gcd(3,7) = 1,且 141 \mid 4,所以方程有唯一解。
目标是寻找 31(mod7)3^{-1} \pmod 7
利用扩展 Euclidean 算法,寻找 3x+7y=13x + 7y = 1 的解:

7=2×3+1    1=72×37 = 2 \times 3 + 1 \implies 1 = 7 - 2 \times 3

所以 3(2)1(mod7)3 \cdot (-2) \equiv 1 \pmod{7}
351(mod7)3 \cdot 5 \equiv 1 \pmod{7}(因为 25-2 \equiv 5

方程两边同时乘以 315(mod7)3^{-1} \equiv 5 \pmod{7} \quad

53x54(mod7)1x20(mod7)x6(mod7)\begin{aligned} 5 \cdot 3 x &\equiv 5 \cdot 4 \pmod 7 \\ 1 \cdot x &\equiv 20 \pmod 7 \\ x &\equiv 6 \pmod 7 \end{aligned}

\square


另外一种常见的同余方程是二次同余方程

x2+px+q0(modm)x^2 + px + q \equiv 0 \pmod{m}

面对这一类方程,首先的做法是给出求根公式下的因式分解:

x2+px+q(xp+p24q2)(xpp24q2)0(modm)x^2 + px + q \equiv (x - \frac{-p + \sqrt{p^2 - 4q}}{2})(x - \frac{-p - \sqrt{p^2 - 4q}}{2}) \equiv 0 \pmod{m}

解的存在性取决于根号是否存在,等价于以下方程是否有解

y2p24q(modm)y^2 \equiv p^2 - 4q \pmod{m}

示例
求解二次同余方程 x2+x+10(mod67)x^2 + x + 1 \equiv 0 \pmod{67} \quad

首先计算判别式 D=12411=3D = 1^2 - 4 \cdot 1 \cdot 1 = -3
令方程

y23(mod67)y^2 \equiv -3 \pmod{67}

等价于

y26482(mod67)y^2 \equiv 64 \equiv 8^2 \pmod{67}

因此,原二次同余方程转换为

(x1+82)(x182)0(mod67)(x - \frac{-1 + 8}{2})(x - \frac{-1 - 8}{2}) \equiv 0 \pmod{67} \quad

为了求解这个方程,我们还需要计算模 6767 下的 212^{-1}
利用扩展 Euclidean 算法,寻找 2x+67y=12x + 67y = 1 的解:

67=33×2+1    1=6733×267 = 33 \times 2 + 1 \implies 1 = 67 - 33 \times 2

所以 2(33)1(mod67)2 \cdot (-33) \equiv 1 \pmod{67},即 2134(mod67)2^{-1} \equiv 34 \pmod{67}

因此,方程的两个解为

x1+8273437(mod67)x18293429(mod67)\begin{aligned} x &\equiv \frac{-1 + 8}{2} \equiv 7 \cdot 34 \equiv 37 \pmod{67} \\ x &\equiv \frac{-1 - 8}{2} \equiv -9 \cdot 34 \equiv 29 \pmod{67} \end{aligned}

得到二次同余方程的解为 x37(mod67)x \equiv 37 \pmod{67}x29(mod67)x \equiv 29 \pmod{67}
\square

# Euler 函数

Euler 函数是群论中计算元素阶数和循环群结构的关键工具。

定义
nn 为正整数,定义函数 φ(n)\varphi(n) 为小于等于 nn 且与 nn 互素的正整数的个数
φ\varphiEuler 函数 (Euler's Totient Function)「オイラーのトーシェント関数」

命题 积性性质
m,nm,n 为正整数,且 gcd(m,n)=1\gcd(m,n) = 1,则

φ(mn)=φ(m)φ(n)\varphi(mn) = \varphi(m) \varphi(n)

命题 素数幂的计算
pp 为素数,kk 为正整数,则

φ(pk)=pkpk1=pk(11p)\varphi(p^k) = p^k - p^{k-1} = p^k \left(1 - \frac{1}{p}\right)

  • 理由:在 1pk1 \dots p^k 中,只有 pp 的倍数 p,2p,,pk1pp, 2p, \dots, p^{k-1}ppkp^k 不互素,共有 pk1p^{k-1} 个。

结合积性与素数幂公式,可得通项公式:

命题
nn 的素因子分解为 n=p1k1p2k2pmkmn = p_1^{k_1} p_2^{k_2} \cdots p_m^{k_m},则

φ(n)=n(11p1)(11p2)(11pm)\varphi(n) = n \left(1 - \frac{1}{p_1}\right)\left(1 - \frac{1}{p_2}\right) \cdots \left(1 - \frac{1}{p_m}\right)

命题 Gauss 循环公式
n1n \geq 1,则

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

其中求和是对 nn 的所有正因子 dd 进行的。

证明

考虑集合 S={1,2,,n}S = \{1, 2, \ldots, n\}。我们将 SS 中的元素 kk 按照其与 nn 的最大公约数 gcd(k,n)\gcd(k, n) 进行分类。
ddnn 的一个因子。我们考察满足 gcd(k,n)=d\gcd(k, n) = dkk 的个数。
条件 gcd(k,n)=d\gcd(k, n) = d 等价于 gcd(k/d,n/d)=1\gcd(k/d, n/d) = 1,且 1k/dn/d1 \leq k/d \leq n/d
这意味着这样的 kk 的个数等于小于等于 n/dn/d 且与 n/dn/d 互素的数的个数,即 φ(n/d)\varphi(n/d)
由于 SS 中每个元素都有唯一的 gcd(k,n)\gcd(k, n),且 gcd(k,n)\gcd(k, n) 必为 nn 的因子,所以

n=dn#{kS:gcd(k,n)=d}=dnφ(n/d)n = \sum_{d \mid n} \#\{k \in S : \gcd(k, n) = d\} = \sum_{d \mid n} \varphi(n/d)

由于 dd 遍历 nn 的所有因子时,n/dn/d 也遍历 nn 的所有因子,因此

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

\square