1. 程式人生 > >中國剩餘定理求解

中國剩餘定理求解

最近在學習網路安全課程,其中涉及的數論確定令人難以琢磨,下面會對相關內容整理成學習筆記~參考來源:https://blog.csdn.net/bobodem/article/details/49426815

典經的、不同除數的同餘式組解法

X≡R1 (mod m1 ) eg:X≡2 (mod 3)

X≡R2 (mod m2) eg:X≡3 (mod 5 )

X≡R3 (mod m3) eg:X≡2 (mod 7 )

名詞註釋

1 餘數R:R1=2、R2=3、R3=2

2 ,亦即除數m:例中m1=3、m2=5、m3=7

3 模的最小公倍數G:G=m1*m2*m3,例中M=3*5*7=105

4 衍數(區域性公倍數)y:Y1=m2m3、Y2=m1m3,Y3=m1m2,例中Y1=5*7=35、Y2=3*7=21、Y3=3*5=15

5 乘率C:這是解算中國剩餘定理的關鍵,而計算“乘率”的方法,是秦九韶在《數書九章》一書中首次提出 的,稱之為“大衍求一術”。“求一”就是使(衍數*乘率)除以模(除數),而餘數為1。即:

衍數Y*乘率C≡1 (mod m),乘率C可以經過反算而得到。例中Y1C1≡1 (mod 3)、

Y2C2≡1 (mod 5) 、Y3C3≡1 (mod 7)。

計算步驟

計算C1方法。由Y1C1≡1 (mod 3)——>35C1≡1 (mod 3)——>(35C1-1) / 7=整數N ,得C1=-1。因為35*-1=-35,-35-1=-36,-36÷3=-12,-12是整數,合符要求。C2、C3之計算也相仿。乘率C之計算見下表:

同餘式 i 衍數Y 乘率C 餘1 模m 檢驗 (Y*C-1)/m = 整數
1 35 -1 1 3 (35*C-1)/3 =N (35*-1-1)/3 = -12
2 21 1 1 5 (21*C-1)/5 =N (21*1-1)/5 = 4
3 15 1 1 7 (15*C-1)/7 =N (15*1-1)/7 = 2

最終結果:X≡R1Y1C1+R2Y2C2+R3Y3C3 (mod G)

即X≡Σ餘數*衍數*乘率 (mod G),見下表計算:

i 餘數R 衍數Y 乘率C R*Y*C
1 2 35 -1 -70
2 3 21 1 63
3 2 15 1 30
Σ 23

X≡23(mod 105)