中国剩余定理 ,又称孙子定理 或中国余数定理 ,是数论 中的一个关于一元线性同余 方程组的定理,说明了一元线性同余方程组有解的准则以及求解方法。该定理在中国古代也被称为“韩信 点兵”、“求一术”(宋 沈括 )、“鬼谷算”(宋 周密 )、“隔墻算”(宋 周密)、“剪管术”(宋 杨辉 )、“秦王 暗点兵”、“物不知数”等。
物不知数
一元线性同余方程组问题最早可见于中国南北朝 时期(公元5世纪)的数学著作《孙子算经 》卷下第二十六题,叫做“物不知数”问题,原文如下:
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
即,一个整数除以三 余二,除以五余三,除以七余二,求这个整数。《孙子算经 》中首次提到了同余方程组问题,以及以上具体问题的解法,因此在中文数学文献中也会将中国剩余定理称为孙子定理。孙子没正式证明,但后来印度数学家及天文学家阿耶波多 给出具体过程,彻底解决了此定理的任何给定实例。[1]
最初对“物不知数”问题作出完整系统解答的是宋朝数学家秦九韶 ,载于1247年《数书九章 》卷一、二《大衍类》中,从而使这一问题变为定理。明朝数学家程大位 在《算法统宗 》中将解法编成易于上口的《孙子歌诀》[2] :
三人同行七十稀,五树梅花廿一支,七子团圆正半月,除百零五便得知
这个歌诀给出了模数为3、5、7时候的同余方程的秦九韶解法。意思是:将除以3 得到的余数乘以70,将除以5得到的余数乘以21,将除以7得到的余数乘以15,全部加起来后再减去105或者105的整数倍,得到的数就是答案(除以105得到的余数则为最小答案)。比如说在以上的物不知数问题里面,使用以上的方法计算就得到
70
×
2
+
21
×
3
+
15
×
2
=
233
=
2
×
105
+
23.
{\displaystyle 70\times 2+21\times 3+15\times 2=233=2\times 105+23.}
因此按歌诀求出的结果就是23。
《数书九章》最初由伟烈亚力 在19世纪初译为英文,而西方世界 最早的完整系统解法由高斯 在1801年提出。
形式描述
用现代数学的语言来说明的话,中国剩余定理给出了以下的一元线性同余方程组:
(
S
)
:
{
x
≡
a
1
(
mod
m
1
)
x
≡
a
2
(
mod
m
2
)
⋮
x
≡
a
n
(
mod
m
n
)
{\displaystyle (S):\quad \left\((\begin{matrix}x\equiv a_{1}{\pmod {m_{1))}\\x\equiv a_{2}{\pmod {m_{2))}\\\vdots \qquad \qquad \qquad \\x\equiv a_{n}{\pmod {m_{n))}\end{matrix))\right.}
有解的判定条件,并用构造法 给出了在有解情况下解的具体形式。
中国剩余定理说明:假设整数 m 1 , m 2 , ... , m n 其中任两数互质 ,则对任意的整数:a 1 , a 2 , ... , a n ,方程组
(
S
)
{\displaystyle (S)}
有解,并且通解可以用如下方式构造得到:
设
M
=
m
1
×
m
2
×
⋯
×
m
n
=
∏
i
=
1
n
m
i
{\displaystyle M=m_{1}\times m_{2}\times \cdots \times m_{n}=\prod _{i=1}^{n}m_{i))
是整数m 1 , m 2 , ... , m n 的乘积,并设
M
i
=
M
/
m
i
,
∀
i
∈
{
1
,
2
,
⋯
,
n
}
{\displaystyle M_{i}=M/m_{i},\;\;\forall i\in \{1,2,\cdots ,n\))
,即
M
i
{\displaystyle M_{i))
是除了m i 以外的n − 1 个整数的乘积。
设
t
i
=
M
i
−
1
{\displaystyle t_{i}=M_{i}^{-1))
为
M
i
{\displaystyle M_{i))
模
m
i
{\displaystyle m_{i))
的数论倒数 :
t
i
M
i
≡
1
(
mod
m
i
)
,
∀
i
∈
{
1
,
2
,
⋯
,
n
}
.
{\displaystyle t_{i}M_{i}\equiv 1{\pmod {m_{i))},\;\;\forall i\in \{1,2,\cdots ,n\}.}
方程组
(
S
)
{\displaystyle (S)}
的通解形式为:
x
=
a
1
t
1
M
1
+
a
2
t
2
M
2
+
⋯
+
a
n
t
n
M
n
+
k
M
=
k
M
+
∑
i
=
1
n
a
i
t
i
M
i
,
k
∈
Z
.
{\displaystyle x=a_{1}t_{1}M_{1}+a_{2}t_{2}M_{2}+\cdots +a_{n}t_{n}M_{n}+kM=kM+\sum _{i=1}^{n}a_{i}t_{i}M_{i},\quad k\in \mathbb {Z} .}
在模
M
{\displaystyle M}
的意义下,方程组
(
S
)
{\displaystyle (S)}
只有一个解:
x
=
∑
i
=
1
n
a
i
t
i
M
i
.
{\displaystyle x=\sum _{i=1}^{n}a_{i}t_{i}M_{i}.}
证明
从假设可知,对任何
i
∈
{
1
,
2
,
⋯
,
n
}
{\displaystyle i\in \{1,2,\cdots ,n\))
,由于
∀
j
∈
{
1
,
2
,
⋯
,
n
}
,
j
≠
i
,
gcd
(
m
i
,
m
j
)
=
1
{\displaystyle \forall j\in \{1,2,\cdots ,n\},\;j\neq i,\;\;\operatorname {gcd} (m_{i},m_{j})=1}
,所以
gcd
(
m
i
,
M
i
)
=
1.
{\displaystyle \operatorname {gcd} (m_{i},M_{i})=1.}
这说明存在整数
t
i
{\displaystyle t_{i))
使得
t
i
M
i
≡
1
(
mod
m
i
)
.
{\displaystyle t_{i}M_{i}\equiv 1{\pmod {m_{i))}.}
这样的
t
i
{\displaystyle t_{i))
叫做
M
i
{\displaystyle M_{i))
模
m
i
{\displaystyle m_{i))
的数论倒数。观察乘积
a
i
t
i
M
i
{\displaystyle a_{i}t_{i}M_{i))
可知:
a
i
t
i
M
i
≡
a
i
⋅
1
=
a
i
(
mod
m
i
)
,
{\displaystyle a_{i}t_{i}M_{i}\equiv a_{i}\cdot 1=a_{i}{\pmod {m_{i))},}
∀
j
∈
{
1
,
2
,
⋯
,
n
}
,
j
≠
i
,
a
j
t
j
M
j
≡
0
(
mod
m
i
)
.
{\displaystyle \forall j\in \{1,2,\cdots ,n\},\;j\neq i,\;\;a_{j}t_{j}M_{j}\equiv 0{\pmod {m_{i))}.}
所以
x
=
a
1
t
1
M
1
+
a
2
t
2
M
2
+
⋯
+
a
n
t
n
M
n
{\displaystyle x=a_{1}t_{1}M_{1}+a_{2}t_{2}M_{2}+\cdots +a_{n}t_{n}M_{n))
满足:
∀
i
∈
{
1
,
2
,
⋯
,
n
}
,
x
=
a
i
t
i
M
i
+
∑
j
≠
i
a
j
t
j
M
j
≡
a
i
+
∑
j
≠
i
0
=
a
i
(
mod
m
i
)
.
{\displaystyle \forall i\in \{1,2,\cdots ,n\},\;\;x=a_{i}t_{i}M_{i}+\sum _{j\neq i}a_{j}t_{j}M_{j}\equiv a_{i}+\sum _{j\neq i}0=a_{i}{\pmod {m_{i))}.}
这说明
x
{\displaystyle x}
就是方程组
(
S
)
{\displaystyle (S)}
的一个解。
另外,假设
x
1
{\displaystyle x_{1))
和
x
2
{\displaystyle x_{2))
都是方程组
(
S
)
{\displaystyle (S)}
的解,那么:
∀
i
∈
{
1
,
2
,
⋯
,
n
}
,
x
1
−
x
2
≡
0
(
mod
m
i
)
.
{\displaystyle \forall i\in \{1,2,\cdots ,n\},\;\;x_{1}-x_{2}\equiv 0{\pmod {m_{i))}.}
而
m
1
,
m
2
,
…
,
m
n
{\displaystyle m_{1},m_{2},\ldots ,m_{n))
两两互质,这说明
M
=
∏
i
=
1
n
m
i
{\displaystyle M=\prod _{i=1}^{n}m_{i))
整除
x
1
−
x
2
{\displaystyle x_{1}-x_{2))
. 所以方程组
(
S
)
{\displaystyle (S)}
的任何两个解之间必然相差
M
{\displaystyle M}
的整数倍。而另一方面,
x
=
a
1
t
1
M
1
+
a
2
t
2
M
2
+
⋯
+
a
n
t
n
M
n
{\displaystyle x=a_{1}t_{1}M_{1}+a_{2}t_{2}M_{2}+\cdots +a_{n}t_{n}M_{n))
是一个解,同时所有形式为:
a
1
t
1
M
1
+
a
2
t
2
M
2
+
⋯
+
a
n
t
n
M
n
+
k
M
=
k
M
+
∑
i
=
1
n
a
i
t
i
M
i
,
k
∈
Z
{\displaystyle a_{1}t_{1}M_{1}+a_{2}t_{2}M_{2}+\cdots +a_{n}t_{n}M_{n}+kM=kM+\sum _{i=1}^{n}a_{i}t_{i}M_{i},\quad k\in \mathbb {Z} }
的整数也是方程组
(
S
)
{\displaystyle (S)}
的解。所以方程组
(
S
)
{\displaystyle (S)}
所有的解的集合就是:
{
k
M
+
∑
i
=
1
n
a
i
t
i
M
i
;
k
∈
Z
}
.
{\displaystyle \{kM+\sum _{i=1}^{n}a_{i}t_{i}M_{i}\;;\quad k\in \mathbb {Z} \}.}
例子
使用中国剩余定理来求解上面的“物不知数”问题,便可以理解《孙子歌诀》中的数字含义。这里的线性同余方程组是:
(
S
)
:
{
x
≡
2
(
mod
3
)
x
≡
3
(
mod
5
)
x
≡
2
(
mod
7
)
{\displaystyle (S):\quad \left\((\begin{matrix}x\equiv 2{\pmod {3))\\x\equiv 3{\pmod {5))\\x\equiv 2{\pmod {7))\end{matrix))\right.}
三个模数 m 1
=
{\displaystyle =}
3, m 2
=
{\displaystyle =}
5, m 3
=
{\displaystyle =}
7 的乘积是 M
=
{\displaystyle =}
105,对应的 M 1
=
{\displaystyle =}
35, M 2
=
{\displaystyle =}
21, M 3
=
{\displaystyle =}
15. 而可以计算出相应的数论倒数:t 1
=
{\displaystyle =}
2, t 2
=
{\displaystyle =}
1, t 3
=
{\displaystyle =}
1. 所以《孙子歌诀》中的 70、21 和 15 其实是这个“物不知数”问题的基础解:
70
=
2
×
35
≡
{
1
(
mod
3
)
0
(
mod
5
)
0
(
mod
7
)
,
21
=
1
×
21
≡
{
0
(
mod
3
)
1
(
mod
5
)
0
(
mod
7
)
,
15
=
1
×
15
≡
{
0
(
mod
3
)
0
(
mod
5
)
1
(
mod
7
)
,
{\displaystyle 70=2\times 35\equiv \left\((\begin{matrix}1{\pmod {3))\\0{\pmod {5))\\0{\pmod {7))\end{matrix)),\right.21=1\times 21\equiv \left\((\begin{matrix}0{\pmod {3))\\1{\pmod {5))\\0{\pmod {7))\end{matrix)),\right.15=1\times 15\equiv \left\((\begin{matrix}0{\pmod {3))\\0{\pmod {5))\\1{\pmod {7))\end{matrix)),\right.}
而将原方程组中的余数相应地乘到这三个基础解上,再加起来,其和就是原方程组的解:
2
×
70
+
3
×
21
+
2
×
15
≡
{
2
×
1
+
3
×
0
+
2
×
0
≡
2
(
mod
3
)
2
×
0
+
3
×
1
+
2
×
0
≡
3
(
mod
5
)
2
×
0
+
3
×
0
+
2
×
1
≡
2
(
mod
7
)
,
{\displaystyle 2\times 70+3\times 21+2\times 15\equiv \left\((\begin{matrix}2\times 1+3\times 0+2\times 0\equiv 2{\pmod {3))\\2\times 0+3\times 1+2\times 0\equiv 3{\pmod {5))\\2\times 0+3\times 0+2\times 1\equiv 2{\pmod {7))\end{matrix)),\right.}
这个和是 233,实际上原方程组的通解公式为:
x
=
233
+
k
×
105
,
k
∈
Z
{\displaystyle x=233+k\times 105,\;k\in \mathbb {Z} }
《孙子算经》中实际上给出了最小正整数解,也就是
k
=
−
2
{\displaystyle k=-2}
时的解:
x
=
23
{\displaystyle x=23}
。
交换环上的推广
主理想整环
设R 是一个主理想整环 ,m1 , m2 , ... , mk 是其中的k 个元素,并且两两互质。令M
=
{\displaystyle =}
m1 m2 ...mn 为这些元素的乘积,那么可以定义一个从商环 R/M R 映射到环乘积R/m 1 R × … × R/m k R 的同态 :
ϕ
:
R
/
M
R
⟶
R
/
m
1
R
×
R
/
m
2
R
×
⋯
×
R
/
m
k
R
{\displaystyle \phi :\;\;\mathrm {R} {\big /}M\mathrm {R} \longrightarrow \mathrm {R} {\big /}m_{1}\mathrm {R} \times \mathrm {R} {\big /}m_{2}\mathrm {R} \times \cdots \times \mathrm {R} {\big /}m_{k}\mathrm {R} }
x
+
M
R
↦
(
x
+
m
1
R
,
x
+
m
2
R
,
⋯
,
x
+
m
k
R
)
{\displaystyle \left.\;\;x+M\mathrm {R} \;\mapsto \;(x+m_{1}\mathrm {R} ,x+m_{2}\mathrm {R} ,\cdots ,x+m_{k}\mathrm {R} )\right.}
并且
ϕ
{\displaystyle \phi }
是一个环同构 。因此
ϕ
{\displaystyle \phi }
的逆映射也存在。而这个逆映射的构造方式就如同中国剩余定理构造一元线性同余方程组的解一样。由于mi 和Mi
=
{\displaystyle =}
M/mi 互质,所以存在s i 和t i 使得
s
i
m
i
+
t
i
M
i
=
1
R
.
{\displaystyle s_{i}m_{i}+t_{i}M_{i}=1_{\mathrm {R} }.}
而映射
φ
:
R
/
m
1
R
×
R
/
m
2
R
×
⋯
×
R
/
m
k
R
⟶
R
/
M
R
{\displaystyle \varphi :\;\;\mathrm {R} {\big /}m_{1}\mathrm {R} \times \mathrm {R} {\big /}m_{2}\mathrm {R} \times \cdots \times \mathrm {R} {\big /}m_{k}\mathrm {R} \longrightarrow \mathrm {R} {\big /}M\mathrm {R} }
(
a
1
+
m
1
R
,
a
2
+
m
2
R
,
⋯
,
a
k
+
m
k
R
)
↦
∑
i
=
1
k
a
i
t
i
M
i
+
M
R
{\displaystyle \left.\;(a_{1}+m_{1}\mathrm {R} ,a_{2}+m_{2}\mathrm {R} ,\cdots ,a_{k}+m_{k}\mathrm {R} )\;\mapsto \;\sum _{i=1}^{k}a_{i}t_{i}M_{i}+M\mathrm {R} \right.}
就是
ϕ
{\displaystyle \phi }
的逆映射。
Z
{\displaystyle \mathbb {Z} }
也是一个主理想整环。将以上的R 换成
Z
{\displaystyle \mathbb {Z} }
,就能得到中国剩余定理。因为
a
i
+
m
i
R
=
{
x
;
x
≡
a
i
(
mod
m
i
)
}
{\displaystyle a_{i}+m_{i}\mathrm {R} =\{x;\;x\;\equiv \;a_{i}{\pmod {m_{i))}\))
一般的交换环
设R 是一个有单位元 的交换环 ,I 1 , I 2 , ... , I k 是为环
R
{\displaystyle \mathbf {R} }
的理想 ,并且当
i
≠
j
{\displaystyle i\neq j}
时,
I
i
+
I
j
=
R
{\displaystyle I_{i}+I_{j}=\mathbf {R} }
,则有典范 的环同构 :
ψ
:
R
/
(
I
1
∩
⋯
∩
I
k
)
⟶
R
/
I
1
×
⋯
×
R
/
I
k
{\displaystyle \psi :\;\;\mathbf {R} /(I_{1}\cap \cdots \cap I_{k})\longrightarrow \mathbf {R} /I_{1}\times \cdots \times \mathbf {R} /I_{k))
x
+
I
1
∩
⋯
∩
I
n
⟼
(
x
+
I
1
,
x
+
I
2
,
⋯
,
x
+
I
k
)
.
{\displaystyle x+I_{1}\cap \cdots \cap I_{n}\longmapsto (x+I_{1},x+I_{2},\cdots ,x+I_{k}).}
模不两两互质的同余式组
模不两两互质的同余式组可化为模两两互质的同余式组,再用孙子定理直接求解。
84=22 ×3×7,160=25 ×5,63=32 ×7,由推广的孙子定理可得
{
x
≡
23
(
mod
84
)
x
≡
7
(
mod
160
)
x
≡
2
(
mod
63
)
{\displaystyle {\begin{cases}x\equiv 23{\pmod {84))\\x\equiv 7{\pmod {160))\\x\equiv 2{\pmod {63))\end{cases))}
与
{
x
≡
7
(
mod
2
5
)
x
≡
2
(
mod
3
2
)
x
≡
7
(
mod
5
)
x
≡
23
(
mod
7
)
{\displaystyle {\begin{cases}x\equiv 7{\pmod {2^{5))}\\x\equiv 2{\pmod {3^{2))}\\x\equiv 7{\pmod {5))\\x\equiv 23{\pmod {7))\end{cases))}
同解。[3]
注意求解过程中应先检查同余式组上是否存在矛盾,存在矛盾的同余式组无解。
{
x
≡
3
(
mod
6
)
x
≡
4
(
mod
10
)
⇒
{
x
≡
1
(
mod
2
)
x
≡
0
(
mod
3
)
x
≡
0
(
mod
2
)
x
≡
4
(
mod
5
)
{\displaystyle {\begin{cases}x\equiv 3{\pmod {6))\\x\equiv 4{\pmod {10))\\\end{cases))\Rightarrow {\begin{cases}{\color {Red}x\equiv 1{\pmod {2))}\\x\equiv 0{\pmod {3))\\{\color {Red}x\equiv 0{\pmod {2))}\\x\equiv 4{\pmod {5))\\\end{cases))}
参考资料
^ 奇客Solidot | 古代战术计谋中的现代数学 . www.solidot.org. [2021-11-03 ] . (原始内容 存档于2021-11-18).
^ 李俨《大衍求一术的过去和未来》《李俨.钱宝琮科学史全集》卷6 121页《程大位的孙子歌》辽宁教育出版社. 1998
^ 刘古胜 徐东星 余畅. 推广的孙子定理 . 高师理科学刊. 2010, (3) [2014-01-07 ] . (原始内容存档 于2020-03-27).
参考书目