中国剩余定理_解一次同余方程组

Posted 一只特立独行的猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中国剩余定理_解一次同余方程组相关的知识,希望对你有一定的参考价值。

问题

孙子定理是中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国余数定理。一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如下:
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程组问题,以及以上具体问题的解法,因此在中文数学文献中也会将中国剩余定理称为孙子定理。
抽象来说,就是已知m和a求解一次同余方程
{ x 三 m 1 ( m o d   a 1 ) x 三 m 2 ( m o d   a 2 ) . . . x 三 m n ( m o d   a n ) \\begin{cases} x三m_1(mod \\ a_1) \\\\ x三m_2(mod \\ a_2) \\\\ ...\\\\ x三m_n(mod \\ a_n) \\end{cases} xm1(mod a1)xm2(mod a2)...xmn(mod an)

思路

由于由n个同余方程,要求直接解上式较为复杂,所以先考虑只有两个同余方程的情况。
{ x 三 m 1 ( m o d   a 1 ) x 三 m 2 ( m o d   a 2 ) \\begin{cases} x三m_1(mod \\ a_1) \\\\ x三m_2(mod \\ a_2) \\\\ \\end{cases} {xm1(mod a1)xm2(mod a2)
一般求解同余方程都要先将同余方程转换为一般方程的格式。上式可以转换为。
{ x = k 1 ∗ a 1 + m 1 x = k 2 ∗ a 2 + m 2 \\begin{cases} x=k_1*a_1+m_1 \\\\ x=k_2 *a_2+m_2 \\\\ \\end{cases} {x=k1a1+m1x=k2a2+m2
可得
k 1 ∗ a 1 + m 1 = k 2 ∗ a 2 + m 2 k_1*a_1+m_1=k_2 *a_2+m_2 k1a1+m1=k2a2+m2
对方程进行变换后得
k 1 ∗ a 1 − k 2 ∗ a 2 = m 2 − m 1 k_1*a_1-k_2*a_2=m_2-m_1 k1a1k2a2=m2m1
其中, m 2 , m 1 , a 1 , a 2 m_2,m_1,a_1,a_2 m2,m1,a1,a2都是已知量,上式就符合 a x + b y = c ax+by=c ax+by=c的不定方程形式,可以通过扩展欧几里得算法求解。
扩展欧几里得算法解不定方程
对不定方程求解得
{ k 1 = k 01 + k ∗ a 2 d k 2 = k 02 + k ∗ a 1 d \\begin{cases} k_1=k_{01}+k* \\frac {a_2} d \\\\ k_2=k_{02}+ k*\\frac {a_1} d \\\\ \\end{cases} {k1=k01+kda2k2=k02+kda1
其中 k 1 , k 2 k_1,k_2 k1,k2表示满足上述方程的所有解, k 0 , 1 , k 02 k_{0,1},k_{02} k0,1,k02表示满足方程的一组特解,k是任意非零整数,d是 a 1 , a 2 a_1,a_2 a1,a2的最大公约数
k 1 k_1 k1回代到 x = k 1 ∗ a 1 + m 1 x=k_1*a_1+m_1 x=k1a1+m1,得 x = a 1 ∗ k 01 + k ∗ a 2 a 1 d + m 1 x=a_1*k_{01}+k* \\frac {a_2a_1} d+m_1 x=a1k01+kda2a1+m以上是关于中国剩余定理_解一次同余方程组的主要内容,如果未能解决你的问题,请参考以下文章

[数论]中国剩余定理

同余方程组求解!

一次同余方程与大衍求一术

二次同余方程的解

中国剩余定理

搞搞中国剩余定理和它的扩展