定义
同余类
可以证明所有对于模
m
{\displaystyle m}
同余的整数对构成一个(整数 系
Z
{\displaystyle \mathbb {Z} }
上的)等价关系 ,换句话说,对于任意两个整数
a
{\displaystyle a}
,
b
{\displaystyle b}
:
(1)
a
≡
a
(
mod
m
)
{\displaystyle a\equiv a{\pmod {m}}}
(2)
[
a
≡
b
(
mod
m
)
]
⇒
[
b
≡
a
(
mod
m
)
]
{\displaystyle [a\equiv b{\pmod {m}}]\Rightarrow [b\equiv a{\pmod {m}}]}
(3)
{
[
a
≡
b
(
mod
m
)
]
∧
[
b
≡
c
(
mod
m
)
]
}
⇒
[
a
≡
c
(
mod
m
)
]
{\displaystyle {\big \{}[a\equiv b{\pmod {m}}]\wedge [b\equiv c{\pmod {m}}]{\big \}}\Rightarrow [a\equiv c{\pmod {m}}]}
故以下的集合
[
a
]
m
:=
{
z
∈
Z
|
(
∃
k
∈
Z
)
(
z
=
a
+
k
m
)
}
{\displaystyle {[a]}_{m}:=\left\{z\in \mathbb {Z} \,{\big |}\,(\exists k\in \mathbb {Z} )(z=a+km)\right\}}
=
{
…
,
a
−
2
m
,
a
−
m
,
a
,
a
+
m
,
a
+
2
m
,
…
}
{\displaystyle \;\;\;\;\;\,=\left\{\ldots ,a-2m,a-m,a,a+m,a+2m,\ldots \right\}}
可称为
a
{\displaystyle a}
对于模
m
{\displaystyle m}
的同余类 (congruence class 或residue class ),也可标记为
a
¯
m
{\displaystyle {\overline {a}}_{m}}
;模
m
{\displaystyle m}
在上下文很清楚时,也可简记为
[
a
]
{\displaystyle \displaystyle [a]}
。
a
{\displaystyle a}
会被称为该同余类的代表数 (representative )[ 4] 。
剩余系
剩余系 [ 5] [ 6] (英语:residue system )亦即模
n
{\displaystyle n}
同余类的代表数的集合,通常使用的代表数是最小非负整数,因为它是除法中的应当余数。要注意的是,对于同一个模数
n
{\displaystyle n}
,不同的同余类不等价,亦即,属于不同同余类的整数不同余于模数
n
{\displaystyle n}
,或者说,模
n
{\displaystyle n}
剩余系中的任二元素不同余于模
n
{\displaystyle n}
;而且,整数域中的每个整数只属于模数
n
{\displaystyle n}
的一个同余类,因为模
n
{\displaystyle n}
将整数域划分 为互斥区块,每个区块是一个同余类。
一个完全剩余系 (英语:complete residue system )指的是模
n
{\displaystyle n}
的全部同余类的代表数的集合;因为剩余系中的任二元素不同余于模
n
{\displaystyle n}
,所以它也称为非同余余数的完整系统 (英语:complete system of incongruent residues )。例如,模
3
{\displaystyle 3}
有三个同余类
[
0
]
,
[
1
]
,
[
2
]
{\displaystyle [0],[1],[2]}
,其完全剩余系可以是
{
9
,
12
+
1
,
15
+
2
}
{\displaystyle \{9,12+1,15+2\}}
。如果该集合是由每个同余类的最小非负整数所组成,亦即
{
0
,
1
,
2
,
.
.
.
,
n
−
1
}
{\displaystyle \{0,1,2,...,n-1\}}
,则称该集合为模
n
{\displaystyle n}
的最小剩余系 (英语:least residue system )。
模
n
{\displaystyle n}
完全剩余系中,与模
n
{\displaystyle n}
互素的代表数所构成的集合,称为模
n
{\displaystyle n}
的简约剩余系 (英语:reduced residue system ),其元素个数记为
ϕ
(
n
)
{\displaystyle \phi (n)}
,亦即欧拉函数 。例如,模
6
{\displaystyle 6}
的简约剩余系为
{
1
,
5
}
{\displaystyle \{1,5\}}
或
{
7
,
11
}
{\displaystyle \{7,11\}}
。如果模
n
{\displaystyle n}
是素数 ,那么它的最小简约剩余系是
{
1
,
2
,
.
.
.
,
n
−
1
}
{\displaystyle \{1,2,...,n-1\}}
,只比最小剩余系少一个
0
{\displaystyle 0}
。
性质
整除性
a
≡
b
(
mod
m
)
⇒
c
⋅
m
=
a
−
b
,
c
∈
Z
{\displaystyle a\equiv b{\pmod {m}}\Rightarrow c\cdot m=a-b,c\in \mathbb {Z} }
(即是说 a 和 b 之差是 m 的倍数) 换句话说,
a
≡
b
(
mod
m
)
⇒
m
∣
(
a
−
b
)
{\displaystyle a\equiv b{\pmod {m}}\Rightarrow m\mid (a-b)}
[ 注 1]
同余可以用来检验一个数是否可以整除 另外一个数,见整除规则 。
传递性
a
≡
b
(
mod
m
)
b
≡
c
(
mod
m
)
}
⇒
a
≡
c
(
mod
m
)
{\displaystyle \left.{\begin{matrix}a\equiv b{\pmod {m}}\\b\equiv c{\pmod {m}}\end{matrix}}\right\}\Rightarrow a\equiv c{\pmod {m}}}
保持基本运算
a
≡
b
(
mod
m
)
c
≡
d
(
mod
m
)
}
⇒
{
a
±
c
≡
b
±
d
(
mod
m
)
a
c
≡
b
d
(
mod
m
)
{\displaystyle \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
{\displaystyle c=d}
时,则为等量加法、减法:
a
±
c
≡
b
±
c
(
mod
m
)
{\displaystyle a\pm c\equiv b\pm c{\pmod {m}}}
这性质更可进一步引申成为这样:
a
≡
b
(
mod
m
)
⇒
{
a
n
≡
b
n
(
mod
m
)
,
∀
n
∈
Z
a
n
≡
b
n
(
mod
m
)
,
∀
n
∈
N
∗
P
(
a
)
≡
P
(
b
)
(
mod
m
)
{\displaystyle a\equiv b{\pmod {m}}\Rightarrow {\begin{cases}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}}\end{cases}}}
[ 注 2]
其中
P
(
x
)
{\displaystyle P(x)}
为任意整系数多项式函数。
放大缩小底数
k为整数,n为正整数,
(
k
m
±
a
)
n
≡
(
±
a
)
n
(
mod
m
)
{\displaystyle (km\pm a)^{n}\equiv (\pm a)^{n}{\pmod {m}}}
放大缩小模数
k
{\displaystyle k}
为正整数,
a
≡
b
(
mod
m
)
{\displaystyle a\equiv b{\pmod {m}}}
,当且仅当
k
a
≡
k
b
(
mod
k
m
)
{\displaystyle ka\equiv kb{\pmod {km}}}
除法原理一
若
k
a
≡
k
b
(
mod
m
)
{\displaystyle ka\equiv kb{\pmod {m}}}
且
k
,
m
{\displaystyle k,m}
互素 ,则
a
≡
b
(
mod
m
)
{\displaystyle a\equiv b{\pmod {m}}}
除法原理二
每个正整数都可以分解为数个约数 的乘积,称为整数分解 。例如
15
=
3
×
5
{\displaystyle 15=3\times 5}
,约数
3
{\displaystyle 3}
与
5
{\displaystyle 5}
都可以整除
15
{\displaystyle 15}
,记为
3
|
15
{\displaystyle 3|15}
与
5
|
15
{\displaystyle 5|15}
。如果
15
{\displaystyle 15}
可以整除某正整数
a
{\displaystyle a}
,亦即
15
|
a
{\displaystyle 15|a}
,那么
15
{\displaystyle 15}
就是
a
{\displaystyle a}
的约数:
a
=
15
×
b
{\displaystyle a=15\times b}
,其中
b
{\displaystyle b}
为另一约数。
a
=
15
×
b
=
(
3
×
5
)
×
b
{\displaystyle a=15\times b=(3\times 5)\times b}
,因此,
15
{\displaystyle 15}
的约数也可以整除
a
{\displaystyle a}
:
(
3
|
15
)
∧
(
15
|
a
)
⇒
3
|
a
{\displaystyle (3|15)\wedge (15|a)\Rightarrow 3|a}
。
a
≡
b
(
mod
m
)
{\displaystyle a\equiv b{\pmod {m}}}
等价于
(
a
−
b
)
≡
0
(
mod
m
)
{\displaystyle (a-b)\equiv 0{\pmod {m}}}
,也就是
m
|
(
a
−
b
)
{\displaystyle m|(a-b)}
。亦即,如果
m
|
(
a
−
b
)
{\displaystyle m|(a-b)}
,那么它可以写成
a
≡
b
(
mod
m
)
{\displaystyle a\equiv b{\pmod {m}}}
,因此有以下除法原理:
m
{\displaystyle m}
的约数也可以整除
(
a
−
b
)
{\displaystyle (a-b)}
。亦即,
m
{\displaystyle m}
是
n
{\displaystyle n}
的倍数 :
m
=
c
×
n
{\displaystyle m=c\times n}
,
n
|
m
{\displaystyle n|m}
。因为
m
|
(
a
−
b
)
{\displaystyle m|(a-b)}
,所以
n
|
(
a
−
b
)
⇒
a
≡
b
(
mod
n
)
{\displaystyle n|(a-b)\Rightarrow a\equiv b{\pmod {n}}}
。
a
≡
b
(
mod
c
n
)
⇒
a
≡
b
(
mod
n
)
{\displaystyle a\equiv b{\pmod {cn}}\Rightarrow a\equiv b{\pmod {n}}}
a
≡
b
(
mod
m
)
n
|
m
}
⇒
a
≡
b
(
mod
n
)
{\displaystyle \left.{\begin{matrix}a\equiv b{\pmod {m}}\\n|m\end{matrix}}\right\}\Rightarrow a\equiv b{\pmod {n}}}
[ 注 1]
现假设
m
{\displaystyle m}
可以整除
(
a
−
b
)
{\displaystyle (a-b)}
的倍数
c
(
a
−
b
)
{\displaystyle c(a-b)}
。如果
m
{\displaystyle m}
和
c
{\displaystyle c}
互素(记为
(
m
,
c
)
=
1
{\displaystyle (m,c)=1}
),那么
m
{\displaystyle m}
必定可以整除
(
a
−
b
)
{\displaystyle (a-b)}
:
m
|
(
a
−
b
)
⇒
a
≡
b
(
mod
m
)
{\displaystyle m|(a-b)\Rightarrow a\equiv b{\pmod {m}}}
。
a
c
≡
b
c
(
mod
m
)
(
c
,
m
)
=
1
}
⇒
a
≡
b
(
mod
m
)
{\displaystyle \left.{\begin{matrix}ac\equiv bc{\pmod {m}}\\(c,m)=1\end{matrix}}\right\}\Rightarrow a\equiv b{\pmod {m}}}
[ 注 3]
如果
m
1
|
(
a
−
b
)
{\displaystyle m_{1}|(a-b)}
而且
m
2
|
(
a
−
b
)
{\displaystyle m_{2}|(a-b)}
,那么
m
1
{\displaystyle m_{1}}
与
m
2
{\displaystyle m_{2}}
的最小公倍数 必定可以整除
(
a
−
b
)
{\displaystyle (a-b)}
,记为
a
≡
b
(
mod
[
m
1
,
m
2
]
)
{\displaystyle a\equiv b{\pmod {[m_{1},m_{2}]}}}
。这可以推广成以下性质:
a
≡
b
(
mod
m
1
)
a
≡
b
(
mod
m
2
)
⋮
a
≡
b
(
mod
m
n
)
(
n
≥
2
)
}
⇒
a
≡
b
(
mod
[
m
1
,
m
2
,
⋯
,
m
n
]
)
{\displaystyle \left.{\begin{matrix}a\equiv b{\pmod {m_{1}}}\\a\equiv b{\pmod {m_{2}}}\\\vdots \\a\equiv b{\pmod {m_{n}}}\\(n\geq 2)\end{matrix}}\right\}\Rightarrow a\equiv b{\pmod {[m_{1},m_{2},\cdots ,m_{n}]}}}
[ 注 4]
上面的最后一个性质可以使用算术基本定理 与集合 来解释。一个大于1的正整数
q
{\displaystyle q}
可以分解为一串素数 幂的乘积:
q
=
p
1
c
1
×
p
2
c
2
×
.
.
.
×
p
n
c
n
{\displaystyle q=p_{1}^{c_{1}}\times p_{2}^{c_{2}}\times ...\times p_{n}^{c_{n}}}
(
p
i
{\displaystyle p_{i}}
两两相异,且
c
i
>
0
{\displaystyle c_{i}>0}
),令
S
q
{\displaystyle S_{q}}
为所有能整除
q
{\displaystyle q}
的素数幂的集合,即
S
q
=
{
p
1
,
p
1
2
,
⋯
,
p
1
c
1
,
p
2
,
p
2
2
,
⋯
,
p
2
c
2
,
⋯
,
p
n
,
p
n
2
,
⋯
,
p
n
c
n
}
{\displaystyle 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
{\displaystyle r}
为正整数,则
r
{\displaystyle r}
整除
q
{\displaystyle q}
,当且仅当
S
r
{\displaystyle S_{r}}
是
S
q
{\displaystyle S_{q}}
的子集 。令
m
1
|
q
{\displaystyle m_{1}|q}
且
m
2
|
q
{\displaystyle m_{2}|q}
,则
S
m
1
{\displaystyle S_{m_{1}}}
与
S
m
2
{\displaystyle S_{m_{2}}}
的并集 必定也是
S
q
{\displaystyle S_{q}}
的子集。取这个并集中幂次最高的各个元素 ,它们的乘积就是
m
1
{\displaystyle m_{1}}
与
m
2
{\displaystyle m_{2}}
的最小公倍数
[
m
1
,
m
2
]
{\displaystyle [m_{1},m_{2}]}
。事实上,有
S
[
m
1
,
m
2
]
=
S
m
1
∪
S
m
2
{\displaystyle S_{[m_{1},m_{2}]}=S_{m_{1}}\cup S_{m_{2}}}
,所以
[
m
1
,
m
2
]
{\displaystyle [m_{1},m_{2}]}
也能够整除
q
{\displaystyle q}
。
同余关系式
威尔逊定理
(
p
−
1
)
!
≡
−
1
(
mod
p
)
{\displaystyle (p-1)!\ \equiv \ -1\ ({\mbox{mod}}\ p)}
费马小定理
a
p
−
1
≡
1
(
mod
p
)
{\displaystyle a^{p-1}\equiv 1{\pmod {p}}}
欧拉定理
a
φ
(
n
)
≡
1
(
mod
n
)
{\displaystyle a^{\varphi (n)}\equiv 1{\pmod {n}}}
卡迈克尔函数
a
λ
(
n
)
≡
1
(
mod
n
)
{\displaystyle a^{\lambda (n)}\equiv 1{\pmod {n}}}
阶乘幂
(
x
)
k
≡
x
(
x
−
1
)
(
x
−
2
)
⋯
(
x
−
k
+
1
)
≡
0
(
mod
k
!
)
{\displaystyle (x)_{k}\equiv x(x-1)(x-2)\cdots (x-k+1)\equiv 0{\pmod {k!}}}
卢卡斯定理
(
m
n
)
≡
∏
i
=
0
k
(
m
i
n
i
)
(
mod
p
)
,
{\displaystyle {\binom {m}{n}}\equiv \prod _{i=0}^{k}{\binom {m_{i}}{n_{i}}}{\pmod {p}},}
组合数最小周期
(
m
+
p
k
+
[
l
o
g
p
n
]
n
)
≡
(
m
n
)
(
mod
p
k
)
{\displaystyle {\binom {m+p^{k+[log_{p}n]}}{n}}\equiv {\binom {m}{n}}{\pmod {p^{k}}}}
设
N
=
∏
i
p
i
k
i
{\displaystyle N=\prod _{i}p_{i}^{k_{i}}}
,则
(
m
+
L
(
n
,
N
)
n
)
≡
(
m
n
)
(
mod
N
)
{\displaystyle {\binom {m+L(n,N)}{n}}\equiv {\binom {m}{n}}{\pmod {N}}}
,其中
L
(
n
,
N
)
=
∏
i
p
i
k
i
+
[
l
o
g
p
n
]
=
N
∏
i
p
i
[
l
o
g
p
n
]
{\displaystyle L(n,N)=\prod _{i}p_{i}^{k_{i}+[log_{p}n]}=N\prod _{i}p_{i}^{[log_{p}n]}}
[ 7]
相关概念
模逆元
a
−
1
a
˙
≡
1
(
mod
n
)
{\displaystyle a^{-1}{\dot {a}}\equiv 1{\pmod {n}}}
可用辗转相除法 、欧拉定理 、卡迈克尔函数 求解。
原根
存在最小的正整数d使得
a
d
≡
1
(
mod
n
)
{\displaystyle a^{d}\equiv 1{\pmod {n}}}
成立,且
d
=
φ
(
n
)
{\displaystyle d=\varphi (n)}
。
同余方程
线性同余方程
a
x
≡
b
(
mod
n
)
{\displaystyle ax\equiv b{\pmod {n}}}
考虑最大公约数 ,有解时用辗转相除法 等方法求解。
线性同余方程组
{
a
1
x
≡
b
1
(
mod
m
1
)
a
2
x
≡
b
2
(
mod
m
2
)
⋮
a
n
x
≡
b
n
(
mod
m
n
)
{\displaystyle {\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
≡
d
(
mod
p
)
{\displaystyle x^{2}\equiv d{\pmod {p}}}
勒让德符号 、雅可比符号 、克罗内克符号 、二次互反律 用于判别d是否为模n的二次剩余。
高次剩余
x
n
≡
d
(
mod
p
)
{\displaystyle x^{n}\equiv d{\pmod {p}}}
例子
求自然数 a的个位数字,就是求a与哪一个数对于模10同余。
10
≡
1
(
mod
3
)
,
10
n
≡
1
(
mod
3
)
,
10001
≡
10
4
+
1
≡
1
+
1
(
mod
3
)
{\displaystyle 10\equiv 1({\textrm {mod}}\ 3),10^{n}\equiv 1({\textrm {mod}}\ 3),10001\equiv 10^{4}+1\equiv 1+1({\textrm {mod}}\ 3)}
。
应用
范例
以下为快速展示小于63位元无号整数之模数乘法的C程式,且变换过程中不发生溢位。计算 a * b (mod m)之算法:
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 ;
}
注释
参考文献
参见