中国剩余定理

中国剩余定理

一、问题的引入

  • 一个整数除以3余2、除以5余3、除以7余2,求这个整数?答案:23

  • 所谓中国剩余定理基本思想:知道一个整数对于几个不同的模数的余数,那么可以推断出该整数对于这些模数的最小非负整数解。

二、拓展欧几里得求逆元

逆元定义:如果一个线性同余方程 a x ≡ 1   ( m o d   b ) ax \equiv 1 \ (mod\ b) ax1 (mod b)则称 x 为 a   m o d   b a\ mod \ b a mod b 的逆元,记作 a − 1 a^{-1} a1

拓展欧几里得算法核心方程 a x + b y = d = g c d ( a , b ) ax + by = d = gcd(a,b) ax+by=d=gcd(a,b)
根据逆元等式: a x ≡ 1 (   m o d    b )   [ 此时 a 、 b 为已知量 , x 为 a 的逆元 a − 1 ] 转化   a x ≡ 1 (   m o d    b )   ⟹ 【 a x = n b + 1 】 ⟹ 【 a x + n ′ b = 1 】 ( n = − n ′ ) \begin{align*} & 根据逆元等式:ax\equiv 1(\ mod\ \ b)\ [此时a、b为已知量,x为a的逆元a^{-1}]\\ & 转化\ \ ax\equiv 1(\ mod\ \ b)\ \Longrightarrow 【ax = nb + 1】\Longrightarrow【ax + n'b = 1】(n = -n') & \end{align*} 根据逆元等式:ax1( mod  b) [此时ab为已知量,xa的逆元a1]转化  ax1( mod  b) ax=nb+1ax+nb=1(n=n)
将上述逆元的定义方程进行转化后我们来对比转化方程拓展欧几里得核心方程
( 1 ) a x + b n = 1 【逆元转化方程】 ( 2 ) a x + b y = g c d ( a , b ) 【拓展欧几里得核心方程】 \begin{align*} & (1){\color{red}a}x + {\color{red}b}n = 1 【逆元转化方程】\\ & (2){\color{red}a}x + {\color{red}b}y = gcd(a,b) 【拓展欧几里得核心方程】\\ \end{align*} (1)ax+bn=1【逆元转化方程】(2)ax+by=gcd(a,b)【拓展欧几里得核心方程】
可以看到上述两方程的格式不能说相似,只能说一模一样。只需要使用拓展欧几里得算法对互质的两个数求出一组解 ( x , y ) (x,y) (x,y)

就可以获得逆元了。

三、中国剩余定理的原理

我们继续考虑上述问题
求整数 X 除以 3 余 2 、除以 5 余 3 、除以 7 余 2 。转化为下述公式 : X    %    3   =   2 X    %    5   =   3 X    %    7   =   2 求整数X除以3余2、除以5余3、除以7余2。转化为下述公式: \\ X\ \ \% \ \ 3\ =\ 2\\ X\ \ \% \ \ 5\ =\ 3\\ X\ \ \% \ \ 7\ =\ 2\\ 求整数X除以32、除以53、除以72。转化为下述公式:X  %  3 = 2X  %  5 = 3X  %  7 = 2
如果可以找到三个整数 X 1 、 X 2 、 X 3 X_1、X_2、X_3 X1X2X3 并且满足下述的算式
{ X 1   %   3 = 2 X 1   %   5 = 0 X 1   %   7 = 0 { X 2   %   3 = 0 X 2   %   5 = 3 X 2   %   7 = 0 { X 3   %   3 = 0 X 3   %   5 = 0 X 3   %   7 = 2 \left\{ \begin{array}{lr} X_1\ \% \ 3 = 2 \\ X_1\ \% \ 5 = 0 \\ X_1\ \% \ 7 = 0 \\ \end{array} \right. \qquad \qquad \left\{ \begin{array}{lr} X_2\ \% \ 3 = 0 \\ X_2\ \% \ 5 = 3 \\ X_2\ \% \ 7 = 0 \\ \end{array} \right. \qquad \qquad \left\{ \begin{array}{lr} X_3\ \% \ 3 = 0 \\ X_3\ \% \ 5 = 0 \\ X_3\ \% \ 7 = 2 \\ \end{array} \right. X1 % 3=2X1 % 5=0X1 % 7=0 X2 % 3=0X2 % 5=3X2 % 7=0 X3 % 3=0X3 % 5=0X3 % 7=2
那么 X X X 可以由这三个整数 X 1 、 X 2 、 X 3 X_1、X_2、X_3 X1X2X3 构成
X = X 1 + X 2 + X 3 X = X_1 + X_2 + X_3 X=X1+X2+X3
继续将上述的 X 1 、 X 2 、 X 3 X_1、X_2、X_3 X1X2X3 分解为子问题
{ Y 1   %   3 = 1 Y 1   %   5 = 0 Y 1   %   7 = 0 { Y 2   %   3 = 0 Y 2   %   5 = 1 Y 2   %   7 = 0 { Y 3   %   3 = 0 Y 3   %   5 = 0 Y 3   %   7 = 1 \left\{ \begin{array}{lr} Y_1\ \% \ 3 = 1 \\ Y_1\ \% \ 5 = 0 \\ Y_1\ \% \ 7 = 0 \\ \end{array} \right. \qquad \qquad \left\{ \begin{array}{lr} Y_2\ \% \ 3 = 0 \\ Y_2\ \% \ 5 = 1 \\ Y_2\ \% \ 7 = 0 \\ \end{array} \right. \qquad \qquad \left\{ \begin{array}{lr} Y_3\ \% \ 3 = 0 \\ Y_3\ \% \ 5 = 0 \\ Y_3\ \% \ 7 = 1 \\ \end{array} \right. Y1 % 3=1Y1 % 5=0Y1 % 7=0 Y2 % 3=0Y2 % 5=1Y2 % 7=0 Y3 % 3=0Y3 % 5=0Y3 % 7=1
于是 X 1 、 X 2 、 X 3 X_1、X_2、X_3 X1X2X3 就可以由对应的Y构成
X 1   =   2   Y 1 X 2   =   3   Y 2 X 3   =   2   Y 3 X_1\ =\ 2\ Y_1\\ X_2\ =\ 3\ Y_2\\ X_3\ =\ 2\ Y_3\\ X1 = 2 Y1X2 = 3 Y2X3 = 2 Y3
所以根据上述的分解,我们最后得到了
  X   =   2   Y 1 + 3   Y 2 + 2   Y 3 \ X \ = \ 2\ Y_1 + 3\ Y_2 + 2\ Y_3  X = 2 Y1+3 Y2+2 Y3
我们以其中一个子问题为例求解
Y 1   %   3 = 1 Y 1   %   5 = 0 Y 1   %   7 = 0 Y_1\ \% \ 3 = 1 \\ Y_1\ \% \ 5 = 0 \\ Y_1\ \% \ 7 = 0 \\ Y1 % 3=1Y1 % 5=0Y1 % 7=0
根据上述等式不难知道 Y 1 Y_1 Y1 一定是 5 × 7 = 35 5 \times 7 = 35 5×7=35 的倍数于是我们令 Y 1 = 35 k Y_1 = 35 k Y1=35k

那么就有 35 k ≡ 1 ( m o d 3 ) 35k \equiv 1 \pmod{3} 35k1(mod3)这时 k k k 就是 5 × 7 5 \times 7 5×7 模 3 的逆元,记 k = [ 3 5 − 1 ] 3 k = [35^{-1}]_3 k=[351]3 那么 Y 1 = 5 × 7 × [ 3 5 − 1 ] 3 Y_1 = 5 \times 7\times [35^{-1}]_3 Y1=5×7×[351]3

因此将所有子问题求解得下述等式
{ Y 1 = 5 × 7 × [ ( 5 × 7 ) − 1 ] 3 并且 [ ( 5 × 7 ) − 1 ] 3 = 2 Y 2 = 3 × 7 × [ ( 3 × 7 ) − 1 ] 5 并且 [ ( 3 × 7 ) − 1 ] 5 = 1 Y 3 = 3 × 5 × [ ( 3 × 5 ) − 1 ] 7 并且 [ ( 3 × 5 ) − 1 ] 7 = 1 \left\{ \begin{array}{lr} Y_1 = 5 \times 7\times [(5\times7)^{-1}]_3\qquad 并且[(5\times7)^{-1}]_3 = 2\\ Y_2 = 3 \times 7\times [(3\times7)^{-1}]_5\qquad 并且[(3\times7)^{-1}]_5 = 1\\ Y_3 = 3 \times 5\times [(3\times5)^{-1}]_7\qquad 并且[(3\times5)^{-1}]_7 = 1\\ \end{array} \right. Y1=5×7×[(5×7)1]3并且[(5×7)1]3=2Y2=3×7×[(3×7)1]5并且[(3×7)1]5=1Y3=3×5×[(3×5)1]7并且[(3×5)1]7=1
由此可以得到最终式子还要mod ( 3 × 5 × 7 ) (3\times5\times7) (3×5×7)因为要求最小整数
X = 2 × ( 5 × 7 × [ ( 5 × 7 ) − 1 ] 3 ) + 3 × ( 3 × 7 × [ ( 3 × 7 ) − 1 ] 5 ) + 2 × ( 3 × 5 × [ ( 3 × 5 ) − 1 ] 7 ) ( m o d 3 × 5 × 7 ) X = 2\times (5 \times 7\times [(5\times7)^{-1}]_3) + 3\times(3 \times 7\times [(3\times7)^{-1}]_5) + 2\times(3 \times 5\times [(3\times5)^{-1}]_7) \pmod{3\times5\times7}\\ X=2×(5×7×[(5×7)1]3)+3×(3×7×[(3×7)1]5)+2×(3×5×[(3×5)1]7)(mod3×5×7)
逆元怎么求?看上述第二节的内容
[ ( 5 × 7 ) − 1 ] 3 = 2 [ ( 3 × 7 ) − 1 ] 5 = 1 [ ( 3 × 5 ) − 1 ] 7 = 1 [(5\times7)^{-1}]_3 = 2\\ [(3\times7)^{-1}]_5 = 1\\ [(3\times5)^{-1}]_7 = 1\\ [(5×7)1]3=2[(3×7)1]5=1[(3×5)1]7=1
所以 X = ( 2 × 5 × 7 × 2 ) + ( 3 × 3 × 7 × 1 ) + ( 2 × 3 × 5 × 1 ) ( m o d 105 ) = ( 140 + 63 + 30 ) ( m o d 105 ) = 23 \color{blue}X = (2 \times 5 \times 7 \times 2) + (3\times3\times7\times1) + (2\times3\times5\times1) \pmod{105} = (140+63+30)\pmod{105} = 23 X=(2×5×7×2)+(3×3×7×1)+(2×3×5×1)(mod105)=(140+63+30)(mod105)=23

相关推荐

  1. 中国剩余定理

    2023-12-16 14:44:03       47 阅读
  2. 中国剩余定理学习

    2023-12-16 14:44:03       31 阅读
  3. 大数定律中心极限定理

    2023-12-16 14:44:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 14:44:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 14:44:03       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 14:44:03       82 阅读
  4. Python语言-面向对象

    2023-12-16 14:44:03       91 阅读

热门阅读

  1. Cesium 展示——图标的依比例和不依比例缩放

    2023-12-16 14:44:03       58 阅读
  2. C#中的多线程

    2023-12-16 14:44:03       54 阅读
  3. git怎么删除远程分支

    2023-12-16 14:44:03       53 阅读
  4. 什么是Ajax,Ajax的优点和用处有什么

    2023-12-16 14:44:03       59 阅读
  5. 技术点:实现大文件上传

    2023-12-16 14:44:03       55 阅读
  6. 基于MATLAB的电路追溯计算

    2023-12-16 14:44:03       54 阅读
  7. dbm --- Unix “数据库“ 接口

    2023-12-16 14:44:03       52 阅读
  8. ACL与NAT

    ACL与NAT

    2023-12-16 14:44:03      48 阅读
  9. 如何在PHP中处理日期和时间?

    2023-12-16 14:44:03       58 阅读