中国剩余定理

中国剩余定理

一、问题的引入

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

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

二、拓展欧几里得求逆元

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

拓展欧几里得算法核心方程ax+by=d=gcd(a,b)ax + by = d = gcd(a,b)ax+by=d=gcd(a,b)
根据逆元等式:ax≡1( mod  b) [此时a、b为已知量,x为a的逆元a−1]转化  ax≡1( mod  b) ⟹【ax=nb+1】⟹【ax+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)ax+bn=1【逆元转化方程】(2)ax+by=gcd(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 = 2X  %  5 = 3X  %  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
如果可以找到三个整数 X1、X2、X3X_1、X_2、X_3X1X2X3 并且满足下述的算式
{X1 % 3=2X1 % 5=0X1 % 7=0{X2 % 3=0X2 % 5=3X2 % 7=0{X3 % 3=0X3 % 5=0X3 % 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=0X2 % 3=0X2 % 5=3X2 % 7=0X3 % 3=0X3 % 5=0X3 % 7=2
那么 XXX 可以由这三个整数 X1、X2、X3X_1、X_2、X_3X1X2X3 构成
X=X1+X2+X3 X = X_1 + X_2 + X_3 X=X1+X2+X3
继续将上述的 X1、X2、X3X_1、X_2、X_3X1X2X3 分解为子问题
{Y1 % 3=1Y1 % 5=0Y1 % 7=0{Y2 % 3=0Y2 % 5=1Y2 % 7=0{Y3 % 3=0Y3 % 5=0Y3 % 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=0Y2 % 3=0Y2 % 5=1Y2 % 7=0Y3 % 3=0Y3 % 5=0Y3 % 7=1
于是 X1、X2、X3X_1、X_2、X_3X1X2X3 就可以由对应的Y构成
X1 = 2 Y1X2 = 3 Y2X3 = 2 Y3 X_1\ =\ 2\ Y_1\\ X_2\ =\ 3\ Y_2\\ X_3\ =\ 2\ Y_3\\ X1 = 2 Y1X2 = 3 Y2X3 = 2 Y3
所以根据上述的分解,我们最后得到了
 X = 2 Y1+3 Y2+2 Y3 \ X \ = \ 2\ Y_1 + 3\ Y_2 + 2\ Y_3  X = 2 Y1+3 Y2+2 Y3
我们以其中一个子问题为例求解
Y1 % 3=1Y1 % 5=0Y1 % 7=0 Y_1\ \% \ 3 = 1 \\ Y_1\ \% \ 5 = 0 \\ Y_1\ \% \ 7 = 0 \\ Y1 % 3=1Y1 % 5=0Y1 % 7=0
根据上述等式不难知道 Y1Y_1Y1 一定是 5×7=355 \times 7 = 355×7=35 的倍数于是我们令 Y1=35kY_1 = 35 kY1=35k

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

因此将所有子问题求解得下述等式
{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 \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)(mod3×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)(mod105)=(140+63+30)(mod105)=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} = 23X=(2×5×7×2)+(3×3×7×1)+(2×3×5×1)(mod105)=(140+63+30)(mod105)=23

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子哥_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值