9866 字
49 分钟
初等数论

初等数论#

前言

本文是我自学数论的笔记,有些尾巴 (二次互反律、原根、离散对数、抽象代数补充) 还没收好,但暂时不想继续写了.

之前以为仅靠理解,就能简单运用起数论,来解决算法竞赛涉及的问题,笔记就没做.后来太久没做题,知识基本忘光了,就觉得比较浪费而可惜.加之数论研究的是“数的结构”,仅仅出于美的欣赏,我也应当在人生的某个阶段学习初等数论.

于是重新学习初等数论 (约等于从零开始学),并附上自己的感想和笔记.

我原先想做类似速查的笔记服务于算法竞赛,但后来不知不觉就给自己加了很多戏,所以读者会觉得我的笔记前半段的内容偏工具向,后半段的内容形式偏自由.我没把精力放在编写偏竞赛向的知识、查 OI Wiki、贴代码实现,而是学习并欣赏抽象理论.

本来打算把精力主要放在学习别的东西上,但不知为何数论学上头了,笔记写了很久.本来个人水平就有限,却像是编教材一样要求自己 (也许我更适合当数学老师吧).这下又耗费我寒假的两个星期,又开始焦虑自己学的东西没啥用了,又责怪自己学习不自律了,哎.

这笔记怎么掺了点代数?

在写这篇笔记前,我只有一点点离散数学课上有关群论的知识,学到后面发现环论和数论有着紧密的联系.抽象代数理论让数论的相关证明得到简化,且更贴近本质.所以这篇笔记后半部分会掺进一些我临时学习的、比较简陋的代数理论,望读者见谅.

为什么这个结论你没给证明?

可能原因是:

  1. 结论过于显然.
  2. 证明思路比较直接.
  3. 证明过程比较繁琐,缺少美感.
  4. 存在运用抽象理论的简洁证明,但个人的水平有限.
  5. 我比较懒,看心情.
N\mathbb N 是什么?

在数论领域中,我们通常规定正整数集 N={1,2,}\mathbb N = \{1, 2, \cdots\}非负整数集 N0={0,1,2,}\mathbb N_0 = \{0, 1, 2, \cdots\}

整除#

带余除法

a,bZa, b \in \mathbb Zb0b \ne 0,则存在唯一的 q,rZq, r \in \mathbb Z,满足 a=qb+ra = qb + r0r<b0 \le r < |b|

证明

考虑 S={aqb:qZ}N0S = \{ a - qb : q \in \mathbb Z \} \cap \mathbb N_0,显然 SS \neq \empty (Archimedes 公理),由于 (N0,)(\mathbb N_0, \le)良序的,总可取 r0=minSr_0 = \min S,设 r0=aq0br_0 = a - q_0 b.我们将证明 r0<br_0 < |b|,且这样的 r0r_0 是唯一的.(反证法) 假设 r0br_0 \ge |b|,则

0r0b=aq0bbS0 \le r_0 - |b| = a - q_0 b - |b| \in S

这与 r0=minSr_0 = \min S 矛盾,故 r0<br_0 < |b|,存在性得证.再设

a=q1b+r1=q2b+r2a = q_1b + r_1 = q_2 b + r_2

其中 q1,r1,q2,r2Zq_1, r_1, q_2, r_2 \in \mathbb Z,且 r1,r2[0,b)r_1, r_2 \in [0, |b|),两式相减得

(q1q2)b=r1r2(b,b)(q_1 - q_2)b = r_1 - r_2 \in (-|b|, |b|)

显然只有 q1=q2q_1 = q_2,唯一性得证.

本质上,带余除法就是从数轴上的点 aa 出发,以 bb 为步进,移动至某个长度为 b|b| 半开半闭的目标区间内

  1. 因为步长和区间长一致,所以可达,区间内存在落点;
  2. 因为区间半开半闭,区间内必然有且仅有一个落点.
推论
  1. () 若 a=0a = 0,则 q=r=0q = r = 0
  2. (符号) 在数轴上,从点 aa 出发,到达 [0,b)[0, |b|) 内.当 b>0b > 0 时,q>0q > 0 表示左移,q<0q < 0 表示右移.
    aabbqq
    ++++0\ge 0
    ++-0\le 0
    -++-
    --++
  3. (折半) 若 ab>0a \ge b > 0,则 r<a/2r < a / 2,即 r<min(b,a/2)r < \min(|b|, a / 2)
推论 3 的证明

容易得知 q>0q > 0,即 q1q \ge 1.(反证法) 假设 ra/2r \ge a / 2,则

0<r<bqb=ara/20 < r < b \le qb = a - r \le a / 2

显然矛盾.

直观上讲,剃平后的 ara - rbb 的倍数,故 barb \le a - r,但又要 b>rb > r,因此临界情况是折半.

C++

在 C/C++ 中,a / b 如何取整,取决于编译器的具体实现.
但从 C99C++11 起,标准规定:商向零取整,即直接舍弃小数部分.
a % b 被定义为 a - a / b,因此取模结果的符号取决于 / 如何取整.以下断言保证为真:

assert(5 % 3 == 2);
assert(5 % -3 == 2);
assert(-5 % 3 == -2);
assert(-5 % -3 == -2);

形式化地,商向零取整的带余除法 a=qb+ra = qb + r 中,rr 的目标区间不是 [0,b)[0, |b|),而是

r{[0,b),a0,(b,0],a<0.r \in \begin{cases} [0, |b|), & a \ge 0, \\ (-|b|, 0], & a < 0. \end{cases}
整除

在带余除法 a=qb+ra = qb + r 中,若 r=0r = 0,称 bb 整除 aabbaa因数aabb倍数,记作 bab \mid a

推论
  1. () n0n \mid 0n0n \ne 0 恒成立,即 00 的因数是所有非零整数
  2. () n1n \mid 1 当且仅当 n=±1n = \pm 1,即 11 的因数只有 ±1\pm 1
  3. (凡因) ±1n\pm 1 \mid n±nn\pm n \mid n 都恒成立,即平凡因数
  4. (正负) ±a±b\pm a \mid \pm b±ab\pm a \mid \mp b 互相等价,即正负不影响因数组成
  5. (有界) 若 aba \mid bb0b \ne 0,则 ab|a| \le |b|,即因数向 00 靠拢
  6. (自反) 若 aba \mid bbab \mid a,则 a=b|a| = |b|
  7. (传递) 若 aba \mid bbcb \mid c,则 aca \mid c
  8. (消去) 若 k0k \ne 0,则 kakbka \mid kb 等价于 aba \mid b
  9. (分解) 若 abmab \mid m,则 ama \mid mbmb \mid m
  10. (组合) 若 eae \mid aebe \mid b,则 e(ka+lb)e \mid (ka + lb),其中 k,lZk, l \in \mathbb Z
推论 5 的证明

b=ad0b = ad \ne 0,则 d0d \ne 0,即 d1|d| \ge 1,于是

b=ad=ada|b| = |ad| = |a| |d| \ge |a|

GCD 和 LCM#

gcd 和 lcm

今有 a,bZa, b \in \mathbb Za2+b2>0a^2 + b^2 > 0.记 DDaabb 的正公因数集,MMaabb 的正公倍数集.
我们称 aabb最大 (正) 公因数gcd(a,b)=maxD\gcd(a, b) = \max D最小 (正) 公倍数 lcm(a,b)=minM\text{lcm}(a, b) = \min M

  1. 由于 1D1 \in D,故 DD \ne \empty,又因为 dad \le |a|dbd \le |b|,因此 DD 是有限集,gcd(a,b)\gcd(a, b) 必然存在;
  2. 由于 abM|ab| \in M,故 MM \ne \empty,又因为 MNM \sub \mathbb N,且 (N,)(\mathbb N, \le) 是良序的,因此 lcm(a,b)\text{lcm}(a, b) 必然存在.
gcd 的推论
  1. () gcd(0,n)=n\gcd(0, n) = n,其中 n0n \ne 0
  2. () gcd(1,n)=1\gcd(1, n) = 1
  3. (对称) gcd(a,b)=gcd(b,a)\gcd(a, b) = \gcd(b, a)
  4. (正负) gcd(a,b)=gcd(a,b)\gcd(a, b) = \gcd(|a|, |b|)
  5. (线性) 若 kZk \in \mathbb Zk0k \ne 0,则 gcd(ka,kb)=kgcd(a,b)\gcd(ka, kb) = |k|\gcd(a, b)
  6. (幂性) 若 kZk \in \mathbb Z,则 gcd(ak,bk)=gcd(a,b)k\gcd(a^k, b^k) = \gcd(a, b)^k
  7. (最近公共祖先) egcd(a,b)e \mid \gcd(a, b),当且仅当 eae \mid aebe \mid b
推论 5 的证明

这里会使用到 Bézout 定理及其推论,详见下文.

一种证明方法是观察“张成空间”.

gcd(ka,kb)Z=span(ka,kb)=kspan(a,b)=kgcd(a,b)Z\gcd(ka, kb) \mathbb Z = \text{span}(ka, kb) = k \,\text{span}(a, b) = k \gcd(a, b) \mathbb Z

因此 gcd(ka,kb)=kgcd(a,b)|\gcd(ka, kb)| = |k \gcd(a, b)|,即 gcd(ka,kb)=kgcd(a,b)\gcd(ka, kb) = |k| \gcd(a, b)

另一种证明方法是相互整除.

  1. 先证 kgcd(a,b)gcd(ka,kb)k \gcd(a, b) \mid \gcd(ka, kb):由 Bézout 推论,只需证 kgcd(a,b)kak\gcd(a, b) \mid ka,消去 kk 后显然成立.
  2. 再证 gcd(ka,kb)kgcd(a,b)\gcd(ka, kb) \mid k \gcd(a, b):欲将其转化为 gcd(ka,kb)/kgcd(a,b)\gcd(ka, kb) / k \mid \gcd(a, b),需 kgcd(ka,kb)k \mid \gcd(ka, kb),而这是显然的,因为 kkak \mid ka,随后要证 gcd(ka,kb)/ka\gcd(ka, kb) / k \mid a,两边同乘以 kk 显然成立. 因此 gcd(ka,kb)=kgcd(a,b)|\gcd(ka, kb)| = |k \gcd(a, b)|,即 gcd(ka,kb)=kgcd(a,b)\gcd(ka, kb) = |k| \gcd(a, b)
推论 6 的证明

这里会使用到互素相关的结论,详见下文.
d=gcd(a,b)d = \gcd(a, b),则 adbd\dfrac{a}{d} \perp \dfrac{b}{d},因此 (ad)k(bd)k\Big(\dfrac{a}{d}\Big)^k \perp \Big(\dfrac{b}{d}\Big)^k

gcd(ak,bk)=dkgcd((ad)k,(bd)k)=dk=gcd(a,b)k\gcd(a^k, b^k) = d^k \gcd\left(\Big(\dfrac{a}{d}\Big)^k, \Big(\dfrac{b}{d}\Big)^k\right) = d^k = \gcd(a, b)^k
推论 7 的证明

(\Rightarrow) egcd(a,b)ae \mid \gcd(a, b) \mid aegcd(a,b)be \mid \gcd(a, b) \mid b
(\Leftarrow) 由 Bézout 定理,设 gcd(a,b)=ka+lb\gcd(a, b) = ka + lbk,lZk,l \in \mathbb Z.由 eae \mid aebe \mid be(ka+lb)=gcd(a,b)e \mid (ka + lb) = \gcd(a, b)

互素

gcd(a,b)=1\gcd(a, b) = 1,则称 aabb 互素,记作 aba \perp b

推论
  1. () 与 00 互素的整数只有 ±1\pm 1
  2. () ±1\pm 1 与所有整数互素.
  3. (互素化) 记 d=gcd(a,b)d = \gcd(a, b),则 adbd\dfrac{a}{d} \perp \dfrac{b}{d}
  4. (排除异己) 若 aba \perp b,则 abca \mid bc 蕴含 aca \mid c
  5. (排除异己) 若 aba \perp b,则 gcd(a,bc)=gcd(a,c)\gcd(a, bc) = \gcd(a, c)
  6. (Euclid 互素定理) ama \perp mbmb \perp m,当且仅当 abmab \perp m
  7. (互素组对) 若 i,j\forall\, i, jaibja_i \perp b_j,则 iaijbj\prod_i a_i \perp \prod_j b_j
  8. (互素乘积) 若 aba \perp b,则 ama \mid mbmb \mid m 蕴含 abmab \mid m
  9. (一般乘积) 记 d=gcd(a,b)d = \gcd(a, b),则 ama \mid mbmb \mid m 蕴含 abd|m\left. \dfrac{ab}{d} \,\middle|\, m \right.,即 lcm(a,b)m\text{lcm}(a, b) \mid m
  10. (互素空间的交) 若 aba \perp b,则 aZbZ=abZa \mathbb Z \cap b \mathbb Z = ab \mathbb Z
  11. (一般空间的交) 记 d=gcd(a,b)d = \gcd(a, b),则 aZbZ=abdZ=lcm(a,b)Za \mathbb Z \cap b \mathbb Z = \dfrac{ab}{d} \, \mathbb Z = \text{lcm}(a, b) \,\mathbb Z
推论 3 的证明

d=gcd(a,b)d = \gcd(a, b),则 dad \mid adbd \mid b,于是

d=gcd(a,b)=dgcd(ad,bd)d = \gcd(a, b) = d \gcd\Big(\dfrac{a}{d}, \dfrac{b}{d}\Big)

可得 gcd(ad,bd)=1\gcd\Big(\dfrac{a}{d}, \dfrac{b}{d}\Big) = 1,因此 adbd\dfrac{a}{d} \perp \dfrac{b}{d}

推论 4 的证明

gcd(a,b)=1\gcd(a, b) = 1,由 Bézout 定理,设

ka+lb=1ka + lb = 1

abca \mid bc,设 ad=bcad = bc.欲证 aca \mid c,为消去 bb,上式两边同乘以 cc,代入得

kac+lbc=kac+lad=a(kc+ld)=ckac + lbc = kac + lad = a(kc + ld) = c

因此 aca \mid c

推论 5 的证明

d=gcd(a,bc)d = \gcd(a, bc)e=gcd(a,c)e = \gcd(a, c)
aba \perp bdbd \perp b,又 dbcd \mid bc,故 dcd \mid c,结合 dad \mid a 可得 ded \mid e
eae \mid aecbce \mid c \mid bcede \mid d
d=e|d| = |e|,即 d=ed = e

推论 6 的证明

下面使用 Bézout 定理进行证明:

(\Rightarrow) 存在 k1,l1,k2,l2Zk_1, l_1, k_2, l_2 \in \mathbb Z,使得

k1a+l1m=1k2b+l2m=1\begin{aligned} k_1a + l_1m &= 1 \\ k_2b + l_2m &= 1 \end{aligned}

两式相乘,整理得

(k1k2)ab+(k1l2a+k2l1b+l1l2m)m=1(k_1k_2)ab + (k_1l_2a + k_2l_1b + l_1l_2m)m = 1

于是 gcd(ab,m)=1\gcd(ab, m) = 1,因此 abmab \perp m

(\Leftarrow) 存在 k,lZk, l \in \mathbb Z,使得

kab+lm=1kab + lm = 1

我们有

(kb)a+lm=1(ka)b+lm=1\begin{aligned} (kb)a + lm &= 1 \\ (ka)b + lm &= 1 \end{aligned}

于是 gcd(a,m)=1\gcd(a, m) = 1gcd(b,m)=1\gcd(b, m) = 1,因此 ama \perp mbmb \perp m

从算术基本定理的角度来看,这个定理是显然的.

推论 8 的证明

由于 ama \mid mbmb \mid m,不妨设 m=akm = ak,则 bakb \mid ak,又因为 bab \perp a,所以 bkb \mid k,从而 abak=mab \mid ak = m

推论 9 的证明

d=gcd(a,b)d = \gcd(a, b),由于 ama \mid mbmb \mid m,不妨设 m=akm = ak
bakb \mid akbd|adk\left. \dfrac{b}{d} \,\middle|\, \dfrac{a}{d}k \right.,而 bdad\dfrac{b}{d} \perp \dfrac{a}{d},故 bd|k\left. \dfrac{b}{d} \,\middle|\, k \right.,因此 abd|ak=m\left. \dfrac{ab}{d} \,\middle|\, ak \right. = m

推论 10 的证明

M1=aZbZM_1 = a \mathbb Z \cap b \mathbb ZM2=abZM_2 = ab \mathbb Z
任取 mM1m \in M_1,则 ama \mid mbmb \mid m,又因 aba \perp b,故 abmab \mid m,即 mM2m \in M_2,于是 M1M2M_1 \sub M_2
任取 mM2m \in M_2,则 abmab \mid m,得 ama \mid mbmb \mid m,即 mM1m \in M_1,于是 M2M1M_2 \sub M_1
M1=M2M_1 = M_2

推论 11 的证明

d=gcd(a,b)d = \gcd(a, b)M1=aZbZM_1 = a \mathbb Z \cap b \mathbb ZM2=abdZM_2 = \dfrac{ab}{d} \, \mathbb Z
任取 mM1m \in M_1,则 ama \mid mbmb \mid m,于是 abd|mM2\left. \dfrac{ab}{d} \,\middle|\, m \in M_2 \right.,因此 M1M2M_1 \sub M_2
任取 mM2m \in M_2,则 abd|m\left. \dfrac{ab}{d} \,\middle|\, m \right.,得 ama \mid mbmb \mid m,于是 mM1m \in M_1,因此 M2M1M_2 \sub M_1
综上,M1=M2M_1 = M_2

lcm 的推论
  1. gcd(a,b)=1\gcd(a, b) = 1,则 lcm(a,b)=ab\text{lcm}(a, b) = |ab|
  2. gcd(a,b)lcm(a,b)=ab\gcd(a, b) \,\text{lcm}(a, b) = |ab|
推论 1 的证明

任取 aabb 的 (正) 公倍数 mm,则 ama \mid mbmb \mid m,又因 gcd(a,b)=1\gcd(a, b) = 1,于是 abmab \mid m.得 abm|ab| \le m,而 ab|ab| 也是 aabb 的 (正) 公倍数,因此等号可以成立,lcm(a,b)=ab\text{lcm}(a, b) = |ab|

更直接的证法是:因为 aba \perp b,所以公倍数集

aZbZ=abZa \mathbb Z \cap b \mathbb Z = ab \mathbb Z

于是 lcm(a,b)=ab\text{lcm}(a, b) = |ab|

推论 2 的证明

可以通过相互整除证明,下面使用更直接的证明方法:

aZbZ=abgcd(a,b)Za \mathbb Z \cap b \mathbb Z = \dfrac{ab}{\gcd(a, b)} \mathbb Z

于是 lcm(a,b)=abgcd(a,b)\text{lcm}(a, b) = \left|\dfrac{ab}{\gcd(a, b)}\right|,即 gcd(a,b)lcm(a,b)=ab\gcd(a, b) \,\text{lcm}(a, b) = |ab|

Bézout 定理#

辗转相除法

a,bZa, b \in \mathbb Z,且 a2+b2>0a^2 + b^2 > 0,带余除法 a=qb+ra = qb + r,只要 aqb<b|a - qb| < |b|,算法

gcd(a,b)=gcd(b,aqb)=\gcd(a, b) = \gcd(b, a - qb) = \cdots

将终止于 gcd(d,0)\gcd(d, 0),此时 d|d| 即为 gcd(a,b)\gcd(a, b)

正确性证明

DabD_{ab}aabb 的公因数集,DbrD_{br}bbrr 的公因数集,我们将证明 Dab=DbrD_{ab} = D_{br}
任取 dDabd \in D_{ab},则 d(aqb)=rd \mid (a - qb) = r,故 dDbrd \in D_{br},即 DabDbrD_{ab} \sub D_{br}
又任取 dDbrd \in D_{br},则 d(qb+r)=ad \mid (qb + r) = a,故 dDabd \in D_{ab},即 DbrDabD_{br} \sub D_{ab}
因此 Dab=DbrD_{ab} = D_{br},从而 gcd(a,b)=gcd(b,r)\gcd(a, b) = \gcd(b, r),即 gcd(a,b)=gcd(b,aqb)\gcd(a, b) = \gcd(b, a - qb)

容易归纳证明 (固定步数后,寻找最小的一组 aabb 作为最差情况),当 aabb 为 Fibonacci 数列邻项时,算法达到最差计算复杂度 O(logmin(a,b))O(\log \min (a, b)).由于每次带余除法都将余数折半,因此该算法十分高效.

向零取整

我们看到,辗转相除法的正确性仅依赖于 aarr 互相被线性组合表示,不过可终止性依赖于 aqb<b|a - qb| < |b|,因此可以让带余除法的商向零取整,即 C/C++ 的整数除法.

void gcd(i64 a, i64 b, i64 &d) {
assert(a != 0 || b != 0);
i64 *cur, *pre;
for (cur = &a, pre = &b; *pre; std::swap(cur, pre)) {
if (std::abs(*cur) >= std::abs(*pre)) {
i64 q = (*cur) / (*pre);
(*cur) -= q * (*pre);
}
}
d = *cur;
if (d < 0) d = -d;
}
Bézout 定理

总存在 k,lZk,l \in \mathbb Z,使得 gcd(a,b)=ka+lb\gcd(a, b) = ka + lb,即最大公因数总能用线性组合表示

证明

考虑辗转相除法

a=q1b+r1rN2=qNrN1+rNrN1=qN+1rN\begin{aligned} a &= q_1 b + r_1 \\ &\hspace{0.525em}\vdots \\ r_{N-2} &= q_N r_{N-1} + r_N \\ r_{N-1} &= q_{N+1} r_{N} \end{aligned}

r1r_1r2r_2 都可以表示成 aabb 的线性组合,归纳得知 rNr_N 也可以,gcd(a,b)=rN\gcd(a, b) = |r_N| 也可以.

推论

span(a,b)={ka+lb:k,lZ}\text{span}(a, b) = \{ka + lb : k,l \in \mathbb Z\},则 span(a,b)=gcd(a,b)Z\text{span}(a, b) = \gcd(a, b) \mathbb Z

证明

Sab=span(a,b)S_{ab} = \text{span}(a, b)d=gcd(a,b)d = \gcd(a, b).由 Bézout 定理知 dSabd \in S_{ab},容易得到 dZSabd \mathbb Z \sub S_{ab}.另一方面,任取 ka+lbSabka + lb \in S_{ab},有 ka+lb=(ka/d+lb/d)ddZka + lb = (ka / d + lb / d) d \in d \mathbb Z,于是 SabdZS_{ab} \sub d \mathbb Z.因此 Sab=dZS_{ab} = d \mathbb Z

可以说 gcd\gcd 是“张成空间”的基,它告诉了我们有关该线性组合的全部信息.只要我们得到了 gcd\gcd,就能有序地获取所有线性组合.我们也可以通过观察“张成空间”来反推 gcd\gcd 的一些性质.

循环群的子群

循环群 G=gG = \langle g \rangle 的子群 HH 必为循环群.设 I={kZ:gkH}I = \{k \in \mathbb Z : g^k \in H\},则 H={gkG:kI}H = \{g^k \in G : k \in I\}

  1. HH 是平凡群,显然也是循环群;
  2. 否则取 d=gcdId = \gcd\,I,由 Bézout 定理可知,dd 可被 II 中所有数的线性组合表示.
    因为 HH 的封闭性,所以 dId \in I.我们将证明 H=gdH = \langle g^d \rangle:一方面 kI\forall\, k \in Idkd \mid k,故 IdZI \sub d \mathbb Z
    另一方面 HH 是群,容易得知 IIZ\mathbb Z 的加法子群,又因为 dId \in I,故 dZId \mathbb Z \sub I
    所以 I=dZI = d \mathbb ZH={gdkG:dkdZ}={(gd)kG:kZ}=gdH = \{g^{dk} \in G : {dk} \in d \mathbb Z\} = \{(g^d)^k \in G : k \in \mathbb Z\} = \langle g^d \rangle
扩展 Euclid 算法

a,bZa, b \in \mathbb Z,且 a2+b2>0a^2 + b^2 > 0,欲寻找 gcd(a,b)\gcd(a, b) 其中一种线性组合表示.考虑从

{1a+0b=a0a+1b=b\begin{cases} 1 \cdot a + 0 \cdot b = a \\ 0 \cdot a + 1 \cdot b = b \end{cases}

开始,对其增广矩阵

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

进行有限次初等行变换,最终得到行

(klgcd(a,b))\begin{pmatrix} k & l & \gcd(a, b) \end{pmatrix}

对应的方程正是

ka+lb=gcd(a,b)ka + lb = \gcd(a, b)

而这只需让每次初等行变换对应于增广列的辗转相除法的每一步即可:

(stgmnh)(mnhsqmtqngqh)(klgcd(a,b)KL0)\cdots \rightarrow \begin{pmatrix} s & t & g \\ m & n & h \end{pmatrix} \rightarrow \begin{pmatrix} m & n & h \\ s-qm & t-qn & g-qh \end{pmatrix} \rightarrow \cdots \rightarrow \begin{pmatrix} k & l & \gcd(a, b) \\ K & L & 0 \end{pmatrix}
void exgcd(i64 a, i64 b, i64 &x, i64 &y, i64 &d) {
assert(a != 0 || b != 0);
i64 M[2][3] = {{1, 0, a}, {0, 1, b}};
i64 *cur, *pre;
for (cur = M[0], pre = M[1]; pre[2]; std::swap(cur, pre)) {
if (std::abs(cur[2]) >= std::abs(pre[2])) {
i64 q = cur[2] / pre[2];
cur[0] -= q * pre[0];
cur[1] -= q * pre[1];
cur[2] -= q * pre[2];
}
}
x = cur[0], y = cur[1], d = cur[2];
if (d < 0) x = -x, y = -y, d = -d;
}
线性不定方程的特解

线性不定方程 ax+by=max + by = m 有解,当且仅当 gcd(a,b)m\gcd(a, b) \mid m
此时设 m=egcd(a,b)m = e \gcd(a, b),取 gcd(a,b)=ka+lb\gcd(a, b) = ka + lb,则

m=e(ka+lb)=aek+belm = e(ka + lb) = a \cdot ek + b \cdot el

得到特解 (x0,y0)=(ek,el)(x_0, y_0) = (ek, el)

线性不定方程的通解

若线性不定方程 ax+by=max + by = m 有特解 (x0,y0)(x_0, y_0),则通解 (kZk \in \mathbb Z) 为

{x=x0+kbgcd(a,b)y=y0kagcd(a,b)\begin{cases} x = x_0 + k \cdot \dfrac{b}{\gcd(a, b)} \\[1em] y = y_0 - k \cdot \dfrac{a}{\gcd(a, b)} \end{cases}
通解的证明

已有 ax0+by0=max_0 + by_0 = m,再设通解 (x,y)(x, y) 满足 ,则

a(xx0)=b(y0y)a(x - x_0) = b(y_0 - y)

aabb 互素化,得

agcd(a,b)(xx0)=bgcd(a,b)(y0y)\dfrac{a}{\gcd(a, b)}(x - x_0) = \dfrac{b}{\gcd(a, b)}(y_0 - y)

于是

agcd(a,b)|bgcd(a,b)(y0y)\left. \dfrac{a}{\gcd(a, b)} \,\middle|\, \dfrac{b}{\gcd(a, b)}(y_0 - y) \right.

又因为 agcd(a,b)bgcd(a,b)\dfrac{a}{\gcd(a, b)} \perp \dfrac{b}{\gcd(a, b)},故

agcd(a,b)|(y0y)\left. \dfrac{a}{\gcd(a, b)} \,\middle|\, (y_0 - y) \right.

可设 agcd(a,b)k=y0y\dfrac{a}{\gcd(a, b)} \cdot k = y_0 - ykZk \in \mathbb Z,代回 a(xx0)=b(y0y)a(x - x_0) = b(y_0 - y) 得证.

素数#

素数

nNn \in \mathbb Nn>1n > 1,若 nn 因数只有 11nn,则称 nn素数,否则是合数

负素数?

在整环 (R,+,)(R, +, \cdot) 中,若元素 pRp \in R 满足

  1. 非零元:p0p \ne 0
  2. 非单位:q\nexists\, qpq=1pq = 1,即 pp 不是可逆元;
  3. 素性:a,bR\forall a, b \in R,若 pabp \mid ab (即 kR\exists\, k \in Rab=pkab = pk),则 pap \mid apbp \mid b

则称 pp素元

由于正负不影响整除关系,我们可以在 Z\mathbb Z 上定义负素数:ppp-p 总是同为素数或同为合数.但这会让各种描述变得拗口,因此若无特殊说明,以下内容的论域均为 N\mathbb N素数一般指正素数,因数一般指正因数

推论
  1. N\mathbb N 被分为三类:11,素数,合数.
  2. 合数的最小非平凡因数是素数.
  3. 素数有无穷多个.
  4. (素性Euclid 整除定理) 设 a,bZa, b \in \mathbb Zpp 是素数,若 pabp \mid ab,则 pap \mid apbp \mid b
推论 2 的证明

NN 是合数,其最小非平凡因数 pp 满足 1<p<N1 < p < NpNp \mid N
假设 pp 是合数,任取其非平凡因数 qq 满足 1<q<p1 < q < pqpq \mid p
于是 qNq \mid N,这与 ppNN 的最小非平凡因数矛盾.
因此 pp 是素数.

推论 3 的证明

(反证法) 假设仅有的 kk 个素数为 {pk}i=1k\{p_k\}_{i=1}^k
N=i=1kpi+1N = \prod_{i=1}^k p_i + 1,显然 1<pi<N1 < p_i < Ni=1,,ki = 1, \cdots, k,因此 NN 是合数.
NN 的最小非平凡因数 pp,则 pNp \mid Npp 是素数.设 p=pip = p_i,那么 pi=1kpip \mid \prod_{i=1}^k p_i
p(Ni=1kpi)=1p \mid (N - \prod_{i=1}^k p_i) = 1,即 p=1p = 1,这与 pp 是素数矛盾.
因此素数有无穷多个.

推论 4 的证明

pap \mid a 则证明完毕,于是设 pap \nmid a,考虑是否有 pap \perp a 从而有 pbp \mid b
由于素数 pp 只有因数 11pp,所以 gcd(p,a)\gcd(p, a) 只可能是 11pp,而 pap \nmid a,所以 gcd(p,a)=1\gcd(p, a) = 1
因为 pabp \mid ab,且 pap \perp a,所以 pbp \mid b

素性意味着不可分解,是素数的本质,等价于算数基本定理中分解的唯一性.

算术基本定理

对于所有的 nNn \in \mathbb Nn>1n > 1,都存在唯一的素因数分解

n=i=1kpiαin = \prod_{i=1}^k p_i^{\alpha_i}

其中 pip_i 是素数且互异,αiN\alpha_i \in \mathbb Ni=1,,ki = 1, \cdots, k

证明

nn 是素数,则分解完成.若 nn 是合数,取其最小非平凡因数 1<p<n1 < p < n,则 pp 是素数.
pp 的唯一性是显然的,因此下面对 nn 的分解也是唯一的.

n=pnpn = p \cdot \dfrac{n}{p}

np\dfrac{n}{p} 重复上述分解操作.由于 np<n\dfrac{n}{p} < n,分解将终止,便得到 nn 唯一的素因数分解.

虽然有更严谨的归纳证明,但比较麻烦,个人更喜欢简洁的程序证明.

同余#

同余

m(ab)m \mid (a - b),则称 aabbmm 同余,记作

ab(modm)a \equiv b \pmod m

容易证明,这等价于在带余除法 a=q1m+r1a = q_1m + r_1b=q2m+r2b = q_2m + r_2 中,r1=r2r_1 = r_2

负模数?

由于正负不影响整除关系,ab(modm)a \equiv b \pmod m 等价于 ab(mod(m))a \equiv b \pmod{(-m)}

因此若无特殊说明,模数 mm 总是正整数

推论
  1. 同余是等价关系
    • 自反性:aa(modm)a \equiv a \pmod m
    • 对称性:若 ab(modm)a \equiv b \pmod m,则 ba(modm)b \equiv a \pmod m
    • 传递性:若 ab(modm)a \equiv b \pmod mbc(modm)b \equiv c \pmod m,则 ac(modm)a \equiv c \pmod m
  2. 线性运算:若 ab(modm)a \equiv b \pmod mcd(modm)c \equiv d \pmod m,则
    • 同余式的和:a+cb+d(modm)a + c \equiv b + d \pmod m
    • 同余式的积:acbd(modm)ac \equiv bd \pmod m
  3. 一般缩放:若 kZk \in \mathbb Z,且 k0k \ne 0,则 kakb(modkm)ka \equiv kb \pmod{km} 等价于 ab(modm)a \equiv b \pmod m
  4. 模数因数:若 ab(modkm)a \equiv b \pmod {km},则 ab(modm)a \equiv b \pmod m
  5. 互素消去:若 kakb(modm)ka \equiv kb \pmod m,且 kmk \perp m,则 ab(modm)a \equiv b \pmod m
  6. 一般消去:若 kakb(modm)ka \equiv kb \pmod m,则 ab(modmgcd(k,m))a \equiv b \pmod{\dfrac{m}{\gcd(k, m)}}
乘法逆元

a,x,mZa, x, m \in \mathbb Zm0m \ne 0,考查同余方程

ax1(modm)ax \equiv 1 \pmod m

ama \perp m,则方程在模 mm 意义下有唯一解,称该解为 aa乘法逆元,记作 a1a^{-1}.否则方程无解.

线性同余方程

a,b,x,mZa, b, x, m \in \mathbb Zm0m \ne 0,考查同余方程

axb(modm)ax \equiv b \pmod m

gcd(a,m)b\gcd(a, m) \mid b,则方程在模 mm 意义下有 gcd(a,m)\gcd(a, m) 个不同的解:

xx0+kmgcd(a,m)(modm)x \equiv x_0 + k \cdot \dfrac{m}{\gcd(a, m)} \pmod m

否则方程无解.

循环群的生成元

GG 是循环群,G=m|G| = mGG 的生成元个数

#{gaG:ga=G}=#{gaG:0b<m,xZ,(ga)x=gb}=#{0a<m:0b<m,xZ,axb(modm)}=#{0a<m:0b<m,gcd(a,m)b}=#{0a<m:gcd(a,m)gcd(0,1,,m1)}=#{0a<m:gcd(a,m)1}=#{0a<m:gcd(a,m)=1}=φ(m)\begin{aligned} \#\{g^a \in G : \langle g^a \rangle = G\} &= \#\{g^a \in G : \forall\, 0 \le b < m, \exists\, x \in \mathbb Z, (g^a)^x = g^b\} \\ &= \#\{0 \le a < m : \forall\, 0 \le b < m, \exists\, x \in \mathbb Z, ax \equiv b \pmod m\} \\ &= \#\{0 \le a < m : \forall\, 0 \le b < m, \gcd(a, m) \mid b\} \\ &= \#\{0 \le a < m : \gcd(a, m) \mid \gcd(0, 1, \cdots, m - 1)\} \\ &= \#\{0 \le a < m : \gcd(a, m) \mid 1\} \\ &= \#\{0 \le a < m : \gcd(a, m) = 1\} \\ &= \varphi(m) \end{aligned}

其中 φ(m)\varphi(m) 是 Euler 函数,后面我们将正式定义它.
可见 gkg^k 是循环群 GG 的生成元,当且仅当 kGk \perp |G|

同余类

mNm \in \mathbb NrZr \in \mathbb Z,定义 rrmm 同余类

[r]m={x:xr(modm)}[r]_m = \{x : x \equiv r \pmod m\}
推论

根据同余的定义,容易得到

[r]m=r+mZ[r]_m = r + m \mathbb Z

mm 同余关系是等价关系,因此模 mm 同余类就是模 mm 同余关系的等价类

  1. [a]m=[b]m[a]_m = [b]_m 当且仅当 ab(modm)a \equiv b \pmod m
  2. 要么 [a]m=[b]m[a]_m = [b]_m,要么 [a]m[b]m=[a]_m \cap [b]_m = \empty
Z/mZ\mathbb Z / m \mathbb Z

容易证明,Z\mathbb Z 关于模 mm 同余关系的商集

Z/mZ={[r]m:0r<m}\mathbb Z / m \mathbb Z = \{[r]_m : 0 \le r < m\}

我们注意到,任取 x[r]mx \in [r]_my[s]my \in [s]_m,都有

x+y[r+s]mxy[rs]m\begin{aligned} x + y &\in [r + s]_m \\ xy &\in [rs]_m \end{aligned}

这提示我们可以在 Z/mZ\mathbb Z / m \mathbb Z 上定义

[a]m+[b]m=[a+b]m[a]m[b]m=[ab]m\begin{aligned} [a]_m + [b]_m &= [a + b]_m \\ [a]_m \cdot [b]_m &= [ab]_m \end{aligned}

容易证明它们是良定义的 (不依赖于具体的代表元),此时 (Z/mZ,+,)(\mathbb Z / m \mathbb Z, +, \cdot) 构成了代数,简记成 Z/mZ\mathbb Z / m \mathbb Z

#

今有

  1. RR \ne \empty
  2. +:R×RR+: R \times R \rightarrow R
  3. :R×RR\cdot: R \times R \rightarrow R

满足

  1. (R,+)(R, +) 构成交换群,其幺元作为环的零元 00
  2. (R,)(R, \cdot) 构成半群,
  3. 分配律:a,b,cR\forall\, a, b, c \in Ra(b+c)=ab+aca \cdot (b + c) = a \cdot b + a \cdot c(a+b)c=ac+bc(a + b) \cdot c = a \cdot c + b \cdot c

则称 (R,+,)(R, +, \cdot)

形形色色的环
  1. 幺环(R,)(R, \cdot) 是幺半群,其幺元作为环的幺元 11
  2. 交换环(R,)(R, \cdot) 是交换群.
  3. 零环({0},+,)(\{0\}, +, \cdot),其中 00 是加法幺元.
    • 零环是含幺交换环.
    • R=1|R| = 1,当且仅当 RR 是零环.
    • 0=10 = 1,当且仅当 RR 是零环.
    • 00 不可逆,除非 RR 是零环.
  4. 零因子:在非零环中,对于 aRa \in Ra0a \ne 0,如果 bR\exists\, b \in Rb0b \ne 0,满足 ab=0(ba=0)a \cdot b = 0 \quad (b \cdot a = 0) 则称 aa 是左 (右) 零因子,左右零因子统称为零因子.
  5. 可逆元/单位:在幺环中,对于 aRa \in R,若 bR\exists\, b \in R,满足 ba=1(ab=1)b \cdot a = 1 \quad (a \cdot b = 1) 则称 aa 是左 (右) 可逆元/单位,并称 bbaa 的左 (右) 逆.
  6. 消去律:环有左 (右) 消去律,当且仅当环中不存在左 (右) 零因子.

    ac=bcac = bcc0c \ne 0,那么 (ab)c=0(a - b)c = 0,而且 cc 不是右零因子,因此 a=ba = b

  7. 一个元素不能同时是左 (右) 零因子和左 (右) 可逆元

    (反证法) 假设 a0a \ne 0 是左零因子,a1a^{-1}aa 的左逆,则存在 b0b \ne 0,导出矛盾:

    b=a1ab=a10=0b = a^{-1}ab = a^{-1}0 = 0
  8. 整环:非零,含幺,可交换,不存在零因子.
    • 由于元素不一定可逆,不能使用除法;
    • 但零因子不存在,可以使用消去律
  9. 除环:非零,含幺,所有非零元素都可逆.
  10. :非零,含幺,可交换,所有非零元素都可逆.
  11. 乘法群/单位群:在幺环 (R,+,)(R, +, \cdot) 中,设 R×R^{\times}RR 中全体可逆元的集合,易知 (R×,)(R^{\times}, \cdot) 构成群,称作幺环 (R,+,)(R, +, \cdot) 的乘法群/单位群,记作 (R,+,)×(R, +, \cdot)^{\times}

Z/mZ\mathbb Z / m \mathbb Z#

Z/mZ\mathbb Z / m \mathbb Z 的结构
  1. Z/mZ\mathbb Z / m \mathbb Z 是零环,当且仅当 m=1m = 1
  2. m>1m > 1 时,Z/mZ\mathbb Z / m \mathbb Z 是交换幺环,幺元是 [1]m[1]_m
  3. [r]m[r]_mZ/mZ\mathbb Z / m \mathbb Z 可逆,当且仅当 rmr \perp m,此时 ([r]m)1=[r1]m([r]_m)^{-1} = [r^{-1}]_m
  4. mm 是合数,设其非平凡因数是 dd,则所有的 [d]m[d]_m 都是零因子,其他非零元素 [r]m[r]_m 均可逆.
  5. mm 是素数,则不存在零因子,且非零元素均可逆,此时 Z/mZ\mathbb Z / m \mathbb Z 是域.
Z/mZ\mathbb Z / m \mathbb Z 的分解

如同算术基本定理,将任何大于 11 的正整数 NN 分解成素数之幂积

N=p1α1p2α2pkαkN = p_1^{\alpha_1} p_2^{\alpha_2} \cdots p_k^{\alpha_k}

形成

N(α1,α2,,αk)N \mapsto (\alpha_1, \alpha_2, \cdots, \alpha_k)

类似坐标分解的双射.我们也可以将大模数环分解成模数两两互素的小模数环之直积

Z/(m1m2mk)ZZ/m1Z×Z/m2Z××Z/mkZ\mathbb Z / (m_1 m_2 \cdots m_k) \mathbb Z \cong \mathbb Z / m_1 \mathbb Z \times \mathbb Z / m_2 \mathbb Z \times \cdots \times \mathbb Z / m_k \mathbb Z

形成

[r]m1m2mk([r]m1,[r]m2,,[r]mk)[r]_{m_1 m_2 \cdots m_k} \mapsto ([r]_{m_1}, [r]_{m_2}, \cdots, [r]_{m_k})

类似坐标分解的双射以及运算的保持.这意味着一个模数系统可被分解成多个独立的素数幂模数系统

3\40123
00963
141107
285211

这样构造的映射是自然的,且不难证明是同态映射,但能构成双射吗?因为同余的运算性质,

[r]m1m2mk[r]m1,[r]m2,,[r]mk[r]_{m_1 m_2 \cdots m_k} \sub [r]_{m_1}, [r]_{m_2}, \cdots, [r]_{m_k}

每个小环好似一个坐标分量.对于所有的坐标,它们能否唯一确定一个大环?

中国剩余定理 (Chinese Remainder Theorem, CRT)

m1,m2,,mkNm_1, m_2, \cdots, m_k \in \mathbb N 两两互素,那么对于任意的 a1,a2,,akZa_1, a_2, \cdots, a_k \in \mathbb Z,同余方程组

{xa1(modm1)xa2(modm2)xak(modmk)\begin{cases} x \equiv a_1 \pmod{m_1} \\ x \equiv a_2 \pmod{m_2} \\ \hspace{1.1em} \vdots \\ x \equiv a_k \pmod{m_k} \end{cases}

在模 M=m1m2mkM = m_1 m_2 \cdots m_k 意义下有唯一解 x0x_0,即该同余方程组完全等价于同余方程

xx0(modM)x \equiv x_0 \pmod{M}

也就是说,所有坐标 ([a1]m1,[a2]m2,,[ak]mk)([a_1]_{m_1}, [a_2]_{m_2}, \cdots, [a_k]_{m_k}) 都能被还原出唯一的 [x0]M[x_0]_M

证明

假如我们能找到正交基底 v1,v2,,vkv_1, v_2, \cdots, v_k,满足

{v11(modm1)v10(modm2)v10(modmk){v20(modm1)v21(modm2)v20(modmk){vk0(modm1)vk0(modm2)vk1(modmk)\begin{cases} v_1 \equiv 1 \pmod{m_1} \\ v_1 \equiv 0 \pmod{m_2} \\ \hspace{1.4em} \vdots \\ v_1 \equiv 0 \pmod{m_k} \end{cases} \: \begin{cases} v_2 \equiv 0 \pmod{m_1} \\ v_2 \equiv 1 \pmod{m_2} \\ \hspace{1.4em} \vdots \\ v_2 \equiv 0 \pmod{m_k} \end{cases} \: \cdots \: \begin{cases} v_k \equiv 0 \pmod{m_1} \\ v_k \equiv 0 \pmod{m_2} \\ \hspace{1.4em} \vdots \\ v_k \equiv 1 \pmod{m_k} \end{cases}

便有

{a1v1a1(modm1)a1v10(modm2)a1v10(modmk){a2v20(modm1)a2v2a2(modm2)a2v20(modmk){akvk0(modm1)akvk0(modm2)akvkak(modmk)\begin{cases} a_1 v_1 \equiv a_1 \pmod{m_1} \\ a_1 v_1 \equiv 0 \pmod{m_2} \\ \hspace{2.35em} \vdots \\ a_1 v_1 \equiv 0 \pmod{m_k} \end{cases} \: \begin{cases} a_2 v_2 \equiv 0 \pmod{m_1} \\ a_2 v_2 \equiv a_2 \pmod{m_2} \\ \hspace{2.35em} \vdots \\ a_2 v_2 \equiv 0 \pmod{m_k} \end{cases} \: \cdots \: \begin{cases} a_k v_k \equiv 0 \pmod{m_1} \\ a_k v_k \equiv 0 \pmod{m_2} \\ \hspace{2.35em} \vdots \\ a_k v_k \equiv a_k \pmod{m_k} \end{cases}

此时

{a1v1+a2v2++akvka1(modm1)a1v1+a2v2++akvka2(modm2)a1v1+a2v2++akvkak(modmk)\begin{cases} a_1 v_1 + a_2 v_2 + \cdots + a_k v_k \equiv a_1 \pmod{m_1} \\ a_1 v_1 + a_2 v_2 + \cdots + a_k v_k \equiv a_2 \pmod{m_2} \\ \hspace{10.9em} \vdots \\ a_1 v_1 + a_2 v_2 + \cdots + a_k v_k \equiv a_k \pmod{m_k} \end{cases}

得方程组的特解

x0=a1v1+a2v2++akvkx_0 = a_1 v_1 + a_2 v_2 + \cdots + a_k v_k

因为通解需要同时满足 kk 条同余方程,每条方程解的间隔不一,所以通解的间隔应该为 lcm(m1,m2,,mk)\text{lcm}(m_1, m_2, \cdots, m_k),即 M=m1m2mkM = m_1 m_2 \cdots m_k,故方程组的解 x0x_0 在模 MM 意义下是唯一的.

唯一性的证明也可以通过设另一解来证明二者在模 MM 意义下相等.

现在的问题是如何找到这样的基底?

{vi0(modm1)vi1(modmi)vi0(modmk)\begin{cases} v_i \equiv 0 \pmod{m_1} \\ \hspace{1.4em} \vdots \\ v_i \equiv 1 \pmod{m_i} \\ \hspace{1.4em} \vdots \\ v_i \equiv 0 \pmod{m_k} \end{cases}

首先肯定有 Mmi|vi\left.\dfrac{M}{m_i} \,\middle|\, v_i\right.,然后我们发现 Mmimi\dfrac{M}{m_i} \perp m_i,因此可取

vi=(Mmi)mi1Mmiv_i = \Big(\dfrac{M}{m_i}\Big)_{m_i}^{-1} \cdot \dfrac{M}{m_i}

如此便得正交基底,此时

x0=a1(Mm1)m11Mm1+a2(Mm2)m21Mm2++ak(Mmk)mk1Mmkx_0 = a_1 \cdot \Big(\dfrac{M}{m_1}\Big)_{m_1}^{-1} \cdot \dfrac{M}{m_1} + a_2 \cdot \Big(\dfrac{M}{m_2}\Big)_{m_2}^{-1} \cdot \dfrac{M}{m_2} + \cdots + a_k \cdot \Big(\dfrac{M}{m_k}\Big)_{m_k}^{-1} \cdot \dfrac{M}{m_k}

便得到模 MM 意义下的唯一解.

(Z/mZ)×(\mathbb Z / m \mathbb Z)^\times#

(Z/mZ)×(\mathbb Z / m \mathbb Z)^\times
  1. (Z/mZ,)(\mathbb Z / m \mathbb Z, \cdot) 仅仅是交换幺半群,因为元素不一定都可逆,比如 [0]m[0]_m[a]m[a]_m (aamm 不互素).
  2. mm 乘法群 (Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 是交换群,所有元素均可逆.
  3. (Z/pZ)×(\mathbb Z / p \mathbb Z)^\times 是循环群,即 (Z/pZ)×Cp1(\mathbb Z / p \mathbb Z)^\times \cong C_{p-1}pp 是素数.
(Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 的形式

根据模 mm 意义下可逆的条件,我们有

(Z/mZ)×=({[r]m:rm},)(\mathbb Z / m \mathbb Z)^\times = (\{[r]_m : r \perp m\}, \cdot)

由于 (Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 是群,运算的封闭性可以导出 Euclid 互素定理:ama \perp mbmb \perp m,当且仅当 abmab \perp m

(Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 的分解

根据 Euclid 互素定理,rMr \perp M 当且仅当 rmir \perp m_ii{1,,k}i \in \{1, \cdots, k\}
也就是说,[r]M(Z/MZ)×[r]_M \in (\mathbb Z / M \mathbb Z)^\times 当且仅当 [r]mi(Z/miZ)×[r]_{m_i} \in (\mathbb Z / m_i \mathbb Z)^\timesi{1,,k}i \in \{1, \cdots, k\}.于是

Z/MZZ/m1Z×Z/m2Z××Z/mkZ\mathbb Z / M \mathbb Z \cong \mathbb Z / m_1 \mathbb Z \times \mathbb Z / m_2 \mathbb Z \times \cdots \times \mathbb Z / m_k \mathbb Z

将保持至

(Z/MZ)×(Z/m1Z)××(Z/m2Z)×××(Z/mkZ)×(\mathbb Z / M \mathbb Z)^{\times} \cong (\mathbb Z / m_1 \mathbb Z)^{\times} \times (\mathbb Z / m_2 \mathbb Z)^{\times} \times \cdots \times (\mathbb Z / m_k \mathbb Z)^{\times}
4\9124578
11291352517
319113123735
(Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 的阶数

对于 nNn \in \mathbb N,定义 Euler 函数

φ(n)=(Z/nZ)×=#{0k<n:gcd(k,n)=1}\begin{aligned} \varphi(n) &= \left|(\mathbb Z / n \mathbb Z)^\times\right| \\ &= \#\{0 \le k < n : \gcd(k, n) = 1\} \end{aligned}
推论
  1. φ(1)=1\varphi(1) = 1,此时 (Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 是平凡群,仅含 [0]m[0]_m
  2. pp 是素数时,φ(p)=p1\varphi(p) = p - 1
  3. pp 是素数时,φ(pk)=pkpk1=pk(11p)\varphi(p^k) = p^k - p^{k-1} = p^k \Big(1 - \dfrac{1}{p}\Big)
  4. mnm \perp n 时,φ(mn)=φ(m)φ(n)\varphi(mn) = \varphi(m) \varphi(n)
  5. φ(n)=npn(11p)\varphi(n) = n \displaystyle\prod_{p \mid n} \Big(1 - \dfrac{1}{p}\Big)n>1n > 1pp 是素数.
  6. dnφ(d)=n\displaystyle\sum_{d \mid n} \varphi(d) = nnNn \in \mathbb N
推论 2 的证明

注意到 gcd(0,p)=p1\gcd(0, p) = p \ne 1gcd(k,p)=1\gcd(k, p) = 1k{1,,p1}k \in \{1, \cdots, p - 1\}

推论 3 的证明

由 Euclid 互素定理,gcd(a,pk)=1\gcd(a, p^k) = 1 当且仅当 gcd(a,p)=1\gcd(a, p) = 1,于是

φ(pk)=#{0a<pk:gcd(a,pk)=1}=#{0a<pk:gcd(a,p)=1}=pk#{0a<pk:gcd(a,p)>1}=pk#{0a<pk:gcd(a,p)=p}=pk#{0a<pk:pa}=pk#{0p,1p,,pk2p}=pkpk1\begin{aligned} \varphi(p^k) &= \#\{0 \le a < p^k : \gcd(a, p^k) = 1\} \\ &= \#\{0 \le a < p^k : \gcd(a, p) = 1\} \\ &= p^k - \#\{0 \le a < p^k : \gcd(a, p) > 1\} \\ &= p^k - \#\{0 \le a < p^k : \gcd(a, p) = p\} \\ &= p^k - \#\{0 \le a < p^k : p \mid a\} \\ &= p^k - \#\{0p, 1p, \cdots, p^{k-2}p\} \\ &= p^k - p^{k-1} \end{aligned}
推论 4 的证明

mnm \perp n,因此对 (Z/mnZ)×(\mathbb Z / mn \mathbb Z)^{\times} 进行分解

(Z/mnZ)×(Z/mZ)××(Z/nZ)×(Z/mnZ)×=(Z/mZ)×(Z/nZ)×φ(mn)=φ(m)φ(n)\begin{aligned} (\mathbb Z / mn \mathbb Z)^{\times} &\cong (\mathbb Z / m \mathbb Z)^{\times} \times (\mathbb Z / n \mathbb Z)^{\times} \\ \left|(\mathbb Z / mn \mathbb Z)^{\times}\right| &= \left|(\mathbb Z / m \mathbb Z)^{\times}\right| \cdot \left|(\mathbb Z / n \mathbb Z)^{\times}\right| \\ \varphi(mn) &= \varphi(m) \varphi(n) \end{aligned}
推论 5 的证明

n>1n > 1,由算术基本定理

φ(n)=φ(i=1kpiαi)=i=1kφ(piαi)=i=1kpiαi(11pi)=npn(11p)\varphi(n) = \varphi\Big(\prod_{i=1}^{k} p_i^{\alpha_i}\Big) = \prod_{i=1}^k \varphi(p_i^{\alpha_i}) = \prod_{i=1}^k p_i^{\alpha_i} \Big(1 - \dfrac{1}{p_i}\Big) = n \prod_{p \mid n} \Big(1 - \dfrac{1}{p}\Big)

pp 是素数.

推论 6 的证明

先回顾循环群 GG 的性质:

  1. 对于所有的 dGd \mid |G|,总存在唯一的 dd 阶子群;
  2. 循环群的子群仍是循环群;
  3. 恰有 ϕ(G)\phi(|G|) 个生成元.

今按阶数给 Z/nZ\mathbb Z / n \mathbb Znn 个数分类:关注阶数为 dd 的数,它们都对应了各自阶为 dd 的生成子群.
Z/nZ\mathbb Z / n \mathbb Z 加法群是循环群,其阶为 dd 的子群 HH 有且仅有一个.
因此所有阶数为 dd 的数都成为了循环群 HH 的生成元,共有 φ(d)\varphi(d) 个.
另外,根据有限群的 Lagrange 定理,dnd \mid n

n=Z/nZ=dn#{0k<n:ordn(k)=d}=dn#{h:h=H,HZ/nZ,H=d}=dnφ(d)\begin{aligned} n &= |\mathbb Z / n \mathbb Z| = \sum_{d \mid n} \#\{0 \le k < n : \text{ord}_n(k) = d\} \\ &= \sum_{d \mid n} \#\{ h : \langle h \rangle = H, H \le \mathbb Z / n \mathbb Z, |H| = d \} = \sum_{d \mid n} \varphi(d) \end{aligned}
(Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 的幂结构

任取 [a]m(Z/mZ)×[a]_m \in (\mathbb Z / m \mathbb Z)^{\times},其中 m>1m > 10a<m0 \le a < mgcd(a,m)=1\gcd(a, m) = 1
研究 [a]m[a]_m 的阶数 ordm(a)\text{ord}_m(a):考虑到非平凡群 (Z/mZ)×(\mathbb Z / m \mathbb Z)^{\times} 的幺元是 [1]m[1]_m,便有

aordm(a)1(modm)a^{\text{ord}_m(a)} \equiv 1 \pmod m

于是我们可以对任何幂 [a]mn[a]_m^n 进行带余除法 (0r<ordm(a)0 \le r < \text{ord}_m(a))

an=aqordm(a)+r=(aordm(a))qarar(modm)a^n = a^{q \cdot \text{ord}_m(a) + r} = {\big(a^{\text{ord}_m(a)}\big)}^{q} \cdot a^r \equiv a^r \pmod m
结论
  1. an1(modm)a^n \equiv 1 \pmod m,当且仅当 ordm(a)n\text{ord}_m(a) \mid n,其中 m>1m > 10a<m0 \le a < mgcd(a,m)=1\gcd(a, m) = 1
  2. (Euler 定理) aφ(m)1(modm)a^{\varphi(m)} \equiv 1 \pmod m,其中 m>1m > 1aZa \in \mathbb Zgcd(a,m)=1\gcd(a, m) = 1
  3. (Fermat 小定理) ap11(modp)a^{p-1} \equiv 1 \pmod p,其中 pp 是素数,p>1p > 1aZa \in \mathbb Zpap \nmid a

感受 Euler 定理:在 (Z/10Z)×={[1]m,[3]m,[7]m,[9]m}(\mathbb Z / 10 \mathbb Z)^{\times} = \{[1]_m, [3]_m, [7]_m, [9]_m\} 中,

143474941(mod10)1^4 \equiv 3^4 \equiv 7^4 \equiv 9^4 \equiv 1 \pmod{10}
Euler 定理的证明

0a<m0 \le a < m(Z/mZ)×(\mathbb Z / m \mathbb Z)^{\times} 的阶数是 φ(m)\varphi(m),生成子群 [a]m\langle [a]_m \rangle 阶数等于 ordm(a)\text{ord}_m(a)
根据有限群的 Lagrange 定理,我们有 ordm(a)φ(m)\text{ord}_m(a) \mid \varphi(m),于是得到

aφ(m)1(modm)a^{\varphi(m)} \equiv 1 \pmod m

可不必 a(Z/mZ)×a \in (\mathbb Z / m \mathbb Z)^{\times} (0a<m0 \le a < m):不妨设 bZb \in \mathbb Z 满足 ba(modm)b \equiv a \pmod m,那么

bφ(m)aφ(m)1(modm)b^{\varphi(m)} \equiv a^{\varphi(m)} \equiv 1 \pmod m
原根

m>1m > 10g<m0 \le g < mgcd(g,m)=1\gcd(g, m) = 1,若 ordm(g)=φ(m)\text{ord}_m(g) = \varphi(m),则称 gg 是模 mm原根

性质
  1. mm 的原根存在,当且仅当 (Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 是循环群,此时 [g]m[g]_m 是循环群 (Z/mZ)×(\mathbb Z / m \mathbb Z)^\times 的生成元.

(Z/pZ)×(\mathbb Z / p \mathbb Z)^\times#

(Z/pZ)×(\mathbb Z / p \mathbb Z)^\times 里的逆元配对

pp 是素数.不难证明

f:(Z/pZ)×(Z/pZ)×aa1\begin{aligned} f: (\mathbb Z / p \mathbb Z)^\times &\rightarrow (\mathbb Z / p \mathbb Z)^\times \\ a &\mapsto a^{-1} \end{aligned}

是双射.此时分两种情况:

  1. a1≢a(modp)a^{-1} \not\equiv a \pmod p
  2. a1a(modp)a^{-1} \equiv a \pmod p,即 a21(modp)a^2 \equiv 1 \pmod p,当且仅当 a±1(modp)a \equiv \pm 1 \pmod p

于是我们得知,在 (Z/pZ)×(\mathbb Z / p \mathbb Z)^\times 里,仅有 [1]p[1]_p[p1]p[p - 1]_p 的逆元是其自身,其他数两两配对,互为逆元.

Wilson 定理

设素数 p>2p > 2,则

(p1)!1(modp)(p - 1)! \equiv -1 \pmod p
证明

由于 (Z/pZ)×(\mathbb Z / p \mathbb Z)^\times 里逆元的配对

(p1)!=12(p2)pairs(p1)1(p1)1(modp)\begin{aligned} (p - 1)! &= 1 \cdot \underbrace{2 \cdot \cdots \cdot (p - 2)}_{\text{pairs}} \cdot (p - 1) \\ &\equiv 1 \cdot (p - 1) \\ &\equiv -1 \pmod p \end{aligned}
二次同余方程

前面我们已经完全掌握了线性同余方程解的情况.

设素数 p>2p > 2a,b,cZa, b, c \in \mathbb Zapa \perp p (即 pap \nmid a),欲解二次同余方程

ax2+bx+c0(modp)ax^2 + bx + c \equiv 0 \pmod p

尝试配方:为了避免求解 aa 的平方根,两边同时乘以 4a4a,前后两式的等价性由 4ap4a \perp p 保证:

(2ax+b)2(b24ac)(modp)(2ax + b)^2 \equiv (b^2 - 4ac) \pmod p

y=2ax+by = 2ax + bΔ=b24ac\Delta = b^2 - 4ac,则

y2Δ(modp)y^2 \equiv \Delta \pmod p

这意味着我们必须去研究这个方程解的存在性:怎样的 Δ\Delta,才能作为模 pp 意义下的平方数?

观察 QR\mathbf{QR}

Z13\mathbb Z_{13}^* 的平方数如下:

123456789101112
1493121010123941

只有 {1,3,4,9,10,12}\{1, 3, 4, 9, 10, 12\} 这些数才能作为平方数在模 1313 意义下被开根.

二次剩余

设素数 p>2p > 2aZa \in \mathbb Zpap \nmid a,若

xZ,ax2(modp)\exists\, x \in \mathbb Z, \quad a \equiv x^2 \pmod p

则称 aa 是模 pp二次剩余(QR\mathbf{QR}),否则是二次非剩余(QNR\mathbf{QNR}).记

QRp={[a]p:xZ,ax2(modp)}QNRp=(Z/pZ)×QRp\begin{aligned} \mathbb{QR}_p &= \{[a]_p : \exists\, x \in \mathbb Z, \: a \equiv x^2 \pmod p\} \\ \mathbb{QNR}_p &= (\mathbb Z / p \mathbb Z)^\times \setminus \mathbb{QR}_p \end{aligned}
初探 QRp\mathbb{QR}_p
  1. 11 总是 QR\mathbf{QR}
  2. QRp\mathbb{QR}_p(Z/pZ)×(\mathbb Z / p \mathbb Z)^\times 上对称分布.

    设素数 p>2p > 2pap \nmid a,因为 (pb)2b2(modp)(p - b)^2 \equiv b^2 \pmod p 总成立,所以方程

    x2a(modp)x^2 \equiv a \pmod p

    或无解,或至少有两个不同余解.下面将说明:若有解,则仅有两解

    任取两解 x12x22a(modp)x_1^2 \equiv x_2^2 \equiv a \pmod p

    x12x22=(x1+x2)(x1x2)0(modp)x_1^2 - x_2^2 = (x_1 + x_2)(x_1 - x_2) \equiv 0 \pmod p

    这意味着任取两解,形式都仅有两种:x1±x2(modp)x_1 \equiv \pm x_2 \pmod p
    因此所有解都仅有该两种形式,方程有且仅有两个不同余解.

  3. 设素数 p>2p > 2,则 #QRp=#QNRp=(p1)/2\#\mathbb{QR}_p = \#\mathbb{QNR}_p = (p - 1) / 2,其中 QRp={[12]p,[22]p,,[((p1)/2)2]p}\mathbb{QR}_p = \{[1^2]_p, [2^2]_p, \cdots, [((p - 1) / 2)^2]_p\}
Legendre 符号

容易验证 QR\mathbf{QR}QNR\mathbf{QNR} 之间的运算呈现出类似 {1,1}\{-1, 1\}pp 乘法群的形式

QRQR=QRQRQNR=QNRQNRQR=QNRQNRQNR=QR\begin{aligned} \mathbf{QR} \cdot \mathbf{QR} &= \mathbf{QR} \\ \mathbf{QR} \cdot \mathbf{QNR} &= \mathbf{QNR} \\ \mathbf{QNR} \cdot \mathbf{QR} &= \mathbf{QNR} \\ \mathbf{QNR} \cdot \mathbf{QNR} &= \mathbf{QR} \\ \end{aligned}

于是我们定义 Legendre 符号 (素数 p>2p > 2)

(ap)={1,a是模pQNR0,pa1,a是模pQR\Big(\dfrac{a}{p}\Big) = \begin{cases} -1, & a \:\text{是模}\: p \:\text{的}\: \mathbf{QNR} \\ 0, & p \mid a \\ 1, & a \:\text{是模}\: p \:\text{的}\: \mathbf{QR} \\ \end{cases}

容易验证

ψ:(Z/pZ)×{1,1}[a]p(ap)\begin{aligned} \psi: (\mathbb Z / p \mathbb Z)^\times &\rightarrow \{-1, 1\} \\ [a]_p &\mapsto \Big(\dfrac{a}{p}\Big) \end{aligned}

是满同态,于是我们可以用代数的方法研究二次剩余.

满同态保持的积性

素数 p>2p > 2a,bZa,b \in \mathbb Zpa,bp \nmid a, b,我们有

(ap)(bp)=(abp)\Big(\dfrac{a}{p}\Big)\Big(\dfrac{b}{p}\Big) = \Big(\dfrac{ab}{p}\Big)

特别地,根据定义,(a2p)=1(\frac{a^2}{p}) = 1

再探 QRp\mathbb{QR}_p
  1. QRp\mathbb{QR}_p 在乘法上构成 (Z/pZ)×(\mathbb Z / p \mathbb Z)^\times 的子群.
  2. 容易验证 φ:(Z/pZ)×QRp[a]p[a2]p\begin{aligned} \varphi : (\mathbb Z / p \mathbb Z)^\times &\rightarrow \mathbb{QR}_p \\ [a]_p &\mapsto [a^2]_p \end{aligned} 是群同态,观察得知 kerφ={1,p1}\ker \varphi = \{1, p - 1\},根据群的同态基本定理 (第一同构定理)(Z/pZ)×QRp(Z/pZ)×/kerφQRp=(Z/pZ)×kerφ=p12\begin{aligned} (\mathbb Z / p \mathbb Z)^\times \ge \mathbb{QR}_p &\cong (\mathbb Z / p \mathbb Z)^\times / \ker \varphi \\ |\mathbb{QR}_p| &= \dfrac{|(\mathbb Z / p \mathbb Z)^\times|}{|\ker \varphi|} = \dfrac{p - 1}{2} \end{aligned}
Euler 准则

设素数 p>2p > 2aZa \in \mathbb Zpap \nmid a

判断 aa 是否为 QR\mathbf{QR},相当于观察 (ap)(\frac{a}{p}) 的值,但它无法被直接计算,所以需要我们去构造有关 aapp 的式子去得到正确的 (ap)(\frac{a}{p}).注意到值域是 {±1}\{\pm 1\},我们联想到 11 的平方根,所以先去找到模 pp 等于 11、有关 aapp 的式子,这又让我们联想到 Fermat 小定理

ap11(modp)a^{p-1} \equiv 1 \pmod p

注意到 p1p - 1 是偶数,不难得到平方根

a(p1)/2±1(modp)a^{(p-1)/2} \equiv \pm 1 \pmod p

可将其作为 (ap)(\frac{a}{p}) 的计算式

(ap)a(p1)/2(modp)\Big(\frac{a}{p}\Big) \equiv a^{(p-1)/2} \pmod p

我们人为构造了

ϕ:(Z/pZ)×(Z/pZ)×[a]p[a(p1)/2]p\begin{aligned} \phi: (\mathbb Z / p \mathbb Z)^\times &\rightarrow (\mathbb Z / p \mathbb Z)^\times \\ [a]_p &\mapsto [a^{(p-1)/2}]_p \end{aligned}

Euler 准则就是 kerϕ=kerψ\ker \phi = \ker \psi

证明

(ap)=1(\frac{a}{p}) = 1 时,即 xZ,x2a(modp)\exists\, x \in \mathbb Z, x^2 \equiv a \pmod p,此时

a(p1)/2(x2)(p1)/2=xp1(modp)a^{(p-1)/2} \equiv (x^2)^{(p-1)/2} = x^{p-1} \pmod p

是否有 pxp \nmid x?结论是肯定的:如若 pxp \mid x,由 x2a(modp)x^2 \equiv a \pmod p 得到 p(x+a)(xa)p \mid (x + a)(x - a),又由 pp 的素性,必有 p(x+a)p \mid (x + a)p(xa)p \mid (x - a),两者皆会导出 pap \mid a 的矛盾.因此由 Fermat 小定理可得

a(p1)/21(modp)a^{(p-1)/2} \equiv 1 \pmod p

(ap)=1(\frac{a}{p}) = -1 时,即 xZ,x2a(modp)\nexists\, x \in \mathbb Z, x^2 \equiv a \pmod p,任取 cZpc \in \mathbb Z_p^*,考查线性同余方程

cxa(modp)cx \equiv a \pmod p

由于 cpc \perp p,方程在模 pp 意义下有唯一解,且必有 x≢c(modp)x \not\equiv c \pmod p,否则与 aaQNR\mathbf{QNR} 矛盾.因此在 Zp\mathbb Z_p^* 内,乘积与 aapp 同余的数两两配对,一共有 (p1)/2(p - 1) / 2 条同余式.因此

(p1)!a(p1)/21(modp)(p - 1)! \equiv a^{(p-1)/2} \equiv -1 \pmod p
小试牛刀

素数 p>2p > 2,探究

x21(modp)x^2 \equiv -1 \pmod p

先看何时有解,我们运用 Euler 准则

(1p)(1)(p1)/2(modp)\Big(\dfrac{-1}{p}\Big) \equiv (-1)^{(p-1)/2} \pmod p

(p1)/2Z(p-1)/2 \in \mathbb Z 分类讨论:

  1. (p1)/20(mod2)(p-1)/2 \equiv 0 \pmod 2,即 p1(mod4)p \equiv 1 \pmod 4 时,(1p)=1(\frac{-1}{p}) = 1,方程有解.
  2. (p1)/21(mod2)(p-1)/2 \equiv 1 \pmod 2,即 p3(mod4)p \equiv 3 \pmod 4 时,(1p)=1(\frac{-1}{p}) = -1,方程无解.

若方程有解,试求之.容易联想到 Wilson 定理

(p1)!1(modp)(p - 1)! \equiv -1 \pmod p

考虑将左式凑成平方的形式,而且我们知道 QR\mathbf{QR} 对称分布的特性

(p1)!(p12)!(1)(p1)/2(p12)!((p12)!)21(modp)\begin{aligned} (p - 1)! &\equiv \Big(\dfrac{p-1}{2}\Big)! (-1)^{(p-1)/2} \Big(\dfrac{p-1}{2}\Big)! \\ &\equiv \Big(\Big(\dfrac{p-1}{2}\Big)!\Big)^2 \\ &\equiv -1 \pmod p \end{aligned}

因此

x±(p12)!(modp)x \equiv \pm \Big(\dfrac{p-1}{2}\Big)! \pmod p
初等数论
https://fuwari.vercel.app/posts/math/number/start/
作者
Shy_Vector
发布于
2026-01-29
许可协议
CC BY-NC-SA 4.0