同余

同余（Congruence modulo，符号：≡）在数学中是指数论中的一种等价关系。当两个整数除以同一个正整数，若得相同余数，则二整数同余。同余是抽象代数中的同余关系的原型。最先引用同余的概念与“≡”符号者为德国数学家高斯。

## 定义

对某两个整数$a$，$b$，若它们除以正整数$m$所得的余数相等，则称$a$，$b$对于模$m$同余，也就是严格来说，存在整数$k$使得

$$a-b = km$$

则称$a,\,b$对于除数$m$是同余的。一般记做

$$a \equiv b \pmod{m}$$

比如

$$26 - 14 = 12 = 1 \times 12$$

故可以记为

$$26 \equiv 14 \pmod{12}$$

但另一方面，从$a-b = km$有$b-a = (-k)\times m$，故$a \equiv b \pmod{m}$等价于

$$b \equiv a \pmod{m}$$

同余符号“≡”其UTF-8码为`U+2261`。

## 同余类

可以证明所有对于模$m$同余的整数对构成一个（整数系$\Z$上的）等价关系，换句话说，对于任意两个整数$a$，$b$：

(1) $a \equiv a \pmod{m}$

(2) $[a \equiv b \pmod{m}] \Rightarrow [b \equiv a \pmod{m}]$

(3) $\big\{[a \equiv b \pmod{m}] \wedge [b \equiv c \pmod{m}]\big\} \Rightarrow [a \equiv c \pmod{m}]$

故以下的集合

$${[a]}_m := \left\{z \in \Z \,\big|\, (\exists k \in \Z)(z = a + km)\right\}$$

$$\;\;\;\;\;\,=\left\{\ldots, a - 2m, a - m, a, a + m, a + 2m, \ldots \right\}$$

可称为$a$对于模$m$的同余类（congruence class或residue class），也可标记为$\overline{a}_m$；模$m$在上下文很清楚时，也可简记为$\displaystyle [a]$。$a$会被称为该同余类的代表数（representative）。

## 剩余系

剩余系（residue system）亦即模$n$同余类的代表数的集合，通常使用的代表数是最小非负整数，因为它是除法中的应当余数。要注意的是，对于同一个模数$n$，不同的同余类不等价，亦即，属于不同同余类的整数不同余于模数$n$，或者说，模$n$剩余系中的任二元素不同余于模$n$；而且，整数域中的每个整数只属于模数$n$的一个同余类，因为模$n$将整数域划分为互斥区块，每个区块是一个同余类。

一个完全剩余系（complete residue system）指的是模$n$的全部同余类的代表数的集合；因为剩余系中的任二元素不同余于模$n$，所以它也称为非同余余数的完整系统（complete system of incongruent residues）。例如，模$3$有三个同余类$[0], [1], [2]$，其完全剩余系可以是$\{9, 12+1, 15+2\}$。如果该集合是由每个同余类的最小非负整数所组成，亦即$\{ 0, 1, 2, ..., n-1\}$，则称该集合为模$n$的最小剩余系（least residue system）。

模$n$完全剩余系中，与模$n$互质的代表数所构成的集合，称为模$n$的简约剩余系（reduced residue system），其元素个数记为$\phi(n)$，亦即欧拉函数。例如，模$6$的简约剩余系为$\{1, 5\}$或$\{7, 11\}$。如果模$n$是质数，那么它的最小简约剩余系是$\{1, 2, ..., n-1\}$，只比最小剩余系少一个$0$。

## 性质

### 整除性

$a \equiv b \pmod{m} \Rightarrow c\cdot m=a-b, c \in \mathbb{Z}$ （即是说 a 和 b 之差是 m 的倍数）换句话说，$a \equiv b \pmod{m} \Rightarrow m \mid(a-b)$ $m \mid x$ 表示 m 能整除 x，或者说 x 能被 m 整除。

同余可以用来检验一个数是否可以整除另外一个数，见整除规则。

### 传递性

$$\left. \begin{matrix} a \equiv b \pmod{m} \\ b \equiv c \pmod{m} \end{matrix} \right\} \Rightarrow a \equiv c \pmod{m}$$

### 保持基本运算

$\left. \begin{matrix} a \equiv b \pmod{m} \\ c \equiv d\pmod{m} \end{matrix} \right\} \Rightarrow \left\{ \begin{matrix} a \pm c \equiv b \pm d \pmod{m} \\ ac \equiv bd \pmod{m} \end{matrix} \right.$ 当$c=d$时，则为等量加法、减法：$a \pm c \equiv b \pm c \pmod{m}$ 这性质更可进一步引申成为这样：$a \equiv b \pmod{m} \Rightarrow \begin{cases} <pre> an \equiv bn \pmod{m}, \forall n \in \mathbb{Z} \\ a^n \equiv b^n \pmod{m}, \forall n \in \mathbb{N}^* \\ P(a)\equiv P(b) \pmod{m} </pre> \end{cases}$但是，$a^n \equiv b^n \pmod{m}$不能推论$a \equiv b \pmod{m}$.

其中$P(x)$为任意整系数多项式函数。

### 放大缩小底数

k为整数，n为正整数，$(km \pm a)^n \equiv (\pm a)^n \pmod{m}$

### 放大缩小模数

$k$为正整数，$a \equiv b \pmod{m}$，当且仅当$ka \equiv kb \pmod{km}$

### 除法原理一

若$ka \equiv kb \pmod{m}$且$k,m$互质，则$a \equiv b \pmod{m}$

### 除法原理二

每个正整数都可以分解为数个因数的乘积，称为整数分解。例如 $15 = 3 \times 5$，因数 $3$ 与 $5$ 都可以整除 $15$，记为 $3|15$ 与 $5|15$。如果 $15$ 可以整除某正整数 $a$，亦即 $15|a$，那么 $15$ 就是 $a$ 的因数：$a = 15 \times b$，其中 $b$ 为另一因数。$a = 15 \times b = (3 \times 5) \times b$，因此，$15$ 的因数也可以整除 $a$：$(3|15) \wedge (15|a) \Rightarrow 3|a$。

$a \equiv b \pmod{m}$ 等价于 $(a-b) \equiv 0 \pmod{m}$，也就是 $m | (a-b)$。亦即，如果 $m | (a-b)$，那么它可以写成 $a \equiv b \pmod{m}$，因此有以下除法原理：

$m$ 的因数也可以整除 $(a-b)$。亦即，$m$ 是 $n$ 的倍数：$m = c \times n$，$n|m$。因为 $m | (a-b)$，所以 $n | (a-b) \Rightarrow a \equiv b \pmod{n}$。

$$a \equiv b \pmod{cn} \Rightarrow a \equiv b \pmod n$$

$$\left. \begin{matrix} a \equiv b \pmod{m} \\ n|m \end{matrix} \right\} \Rightarrow a \equiv b \pmod n$$

现假设 $m$ 可以整除 $(a-b)$ 的倍数 $c(a-b)$。如果 $m$ 和 $c$ 互质（记为 $(m, c) = 1$），那么 $m$ 必定可以整除 $(a-b)$：$m|(a-b) \Rightarrow a \equiv b \pmod{m}$。

$\left. \begin{matrix} ac \equiv bc \pmod{m} \\ (c, m) = 1 \end{matrix} \right\} \Rightarrow a \equiv b \pmod m$ $(m_1,m_2,\cdots,m_n)$表示$m_1,m_2,\cdots,m_n$的最大公约数。

如果 $m_1|(a-b)$ 而且 $m_2|(a-b)$，那么 $m_1$ 与 $m_2$ 的最小公倍数必定可以整除 $(a-b)$，记为 $a \equiv b \pmod{[m_1, m_2]}$。这可以推广成以下性质：

$\left. \begin{matrix} a \equiv b \pmod{m_1} \\ a \equiv b \pmod{m_2} \\ \vdots \\ a \equiv b \pmod{m_n} \\ (n \ge 2) \end{matrix} \right\} \Rightarrow a \equiv b \pmod{[m_1,m_2,\cdots,m_n]}$ $[m_1,m_2,\cdots,m_n]$表示$m_1,m_2,\cdots,m_n$的最小公倍数。

上面的最后一个性质可以使用算术基本定理与集合来解释。一个大于1的正整数 $q$ 可以分解为一串质数幂的乘积：$q = p_1^{c_1} \times p_2^{c_2} \times ... \times p_n^{c_n}$（$p_i$ 两两相异，且$c_i>0$），令 $S_q$ 为所有能整除 $q$ 的质数幂的集合，即 $S_q = \{p_1, p_1^2,\cdots,p_1^{c_1}, p_2,p_2^2,\cdots,p_2^{c_2},\cdots, p_n, p_n^2,\cdots,p_n^{c_n}\}$。设 $r$ 为正整数，则 $r$ 整除 $q$，当且仅当 $S_r$ 是 $S_q$ 的子集。令 $m_1 | q$ 且 $m_2 | q$，则$S_{m_1}$ 与 $S_{m_2}$ 的联集必定也是 $S_q$ 的子集。取这个联集中幂次最高的各个元素，它们的乘积就是 $m_1$ 与 $m_2$ 的最小公倍数$[m_1,m_2]$。事实上，有 $S_{[m_1,m_2]}=S_{m_1}\cup S_{m_2}$，所以 $[m_1,m_2]$ 也能够整除 $q$。

## 同余关系式

### 威尔逊定理

$$(p-1)!\ \equiv\ -1\ (\mbox{mod}\ p)$$

### 费马小定理

$$a^{p-1} \equiv 1 \pmod p$$

### 欧拉定理

$$a^{\varphi (n)} \equiv 1 \pmod{n}$$

### 卡迈克尔函数

$$a^{\lambda (n)} \equiv 1 \pmod{n}$$

### 阶乘幂

$$(x)_k \equiv x(x-1)(x-2)\cdots(x-k+1) \equiv 0 \pmod{k!}$$

### 卢卡斯定理

$$\binom{m}{n}\equiv\prod_{i=0}^k\binom{m_i}{n_i}\pmod p,$$

### 组合数最小周期

$$\binom{m+p^{k+[log_p n]}}{n}\equiv \binom{m}{n}\pmod{p^k}$$

设$N=\prod_i p_i^{k_i}$，则$\binom{m+L(n,N)}{n}\equiv \binom{m}{n}\pmod{N}$，其中$L(n,N)=\prod_i p_i^{k_i+[log_p n]}=N\prod_i p_i^{[log_p n]}$

## 相关概念

### 模反元素

$$a^{-1}\dot a\equiv 1\pmod{n}$$

可用辗转相除法、欧拉定理、卡迈克尔函数求解。

### 原根

存在最小的正整数d使得$a^d\equiv 1\pmod{n}$成立，且$d=\varphi(n)$。

## 同余方程

### 线性同余方程

$$ax\equiv b\pmod{n}$$

考虑最大公约数，有解时用辗转相除法等方法求解。

### 线性同余方程组

$$\begin{cases} a_1 x \equiv b_1 \pmod{m_1} \\ a_2 x \equiv b_2 \pmod{m_2} \\ \qquad\qquad\vdots \\ a_n x \equiv b_n \pmod{m_n} \\ \end{cases}$$

先求解每一个线性同余方程，再用中国剩余定理解方程组。

### 二次剩余

$$x^2\equiv d\pmod{p}$$

勒让德符号、雅可比符号、克罗内克符号、二次互反律用于判别d是否为模n的二次剩余。

### 高次剩余

$$x^n\equiv d\pmod{p}$$

## 例子

- 求自然数a的个位数字，就是求a与哪一个数对于模10同余。
- $10\equiv 1 (\textrm{mod }\ 3), 10^{n}\equiv 1 (\textrm{mod }\ 3), 10001\equiv 10^{4}+1\equiv 1+1 (\textrm{mod }\ 3)$。

## 应用

模数算术在数论、群论、环论、纽结理论、抽象代数、计算机代数、密码学、计算机科学、化学、视觉和音乐等学科中皆有应用。

它是数论的立基点之一，与其各个面向都相关。

模数算术经常被用于计算标识符中所使用的校验和，比如国际银行账户号码（IBANs）就用到了模97的算术，来捕获用户在输入银行账户号码时的错误。

于密码学中，模数算术是RSA与迪菲－赫尔曼密钥交换等公钥系统的基础，它同时也提供有限域，应用于 椭圆加密，且用于许多对称密钥加密中，包括高级加密标准、国际资料加密算法等。

于计算机科学, 同余被应用于位元运算或其他与固定宽度之循环资料结构相关的操作。

于化学中, CAS号（一个对各种化合物皆异之的识别码）的最后一码为校验码，将CAS号首二部分最后的数字乘上一，下一码乘上二，下一码乘上三以此类推，将所有积加起来再取模10。

在音乐领域，模12用于十二平均律系统。

星期的计算中取模7算术极重要。

更广泛而言，同余在法律、经济（见赛局理论）或其他社会科学领域中也有应用。

## 范例

以下为快速展示小于63位元无号整数之模数乘法的C程式，且转换过程中不发生溢位。计算 a * b (mod m)之算法:

```c
uint64_t mul_mod(uint64_t a, uint64_t b, uint64_t m)
{
   uint64_t d = 0, mp2 = m >> 1;
   int i;
   if (a >= m) a %= m;
   if (b >= m) b %= m;
   for (i = 0; i < 64; ++i)
   {
       d = (d > mp2) ? (d << 1) - m : d << 1;
       if (a & 0x8000000000000000ULL)
           d += b;
       if (d > m) d -= m;
       a <<= 1;
   }
   return d%m;
}
```