版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Totoro1745/article/details/80051755
最近在学习网络安全课程,其中涉及的数论确定令人难以琢磨,下面会对相关内容整理成学习笔记~参考来源: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)