中国余数定理(CRT)
2 egcd算法求解得19在模11下的乘法逆元为7,11在模19下的乘法逆元为7,所以x= 19 ∗ 8 ∗ 7 + 11 ∗ 3 ∗ 7 m o d ( 11 ∗ 19 ) = 41 19*8*7+11*3*7mod(11*19)=41 19∗8∗7+11∗3∗7mod(11∗19)=41。
3
先求M= 5 ∗ 7 ∗ 9 ∗ 11 = 3465 5*7*9*11=3465 5∗7∗9∗11=3465, b 1 = M / m 1 = 693 b_1=M/m_{1}=693 b1=M/m1=693,同理得 b 2 = 495 , b 3 = 385 , b 4 = 315 b_{2}=495,b_{3}=385,b_{4}=315 b2=495,b3=385,b4=315,求乘法逆元 b 1 − 1 = 2 , b 2 − 1 = 3 , b 3 − 1 = 4 , b 4 − 1 = 8 b^{-1}_{1}=2,b^{-1}_{2}=3,b^{-1}_{3}=4,b^{-1}_{4}=8 b1−1=2,b2−1=3,b3−1=4,b4−1=8,所以 x = 693 ∗ 2 ∗ 1 + 495 ∗ 3 ∗ 2 + 385 ∗ 4 ∗ 3 + 315 ∗ 8 ∗ 4 = 19056 m o d ( 3465 ) = 1731 x=693*2*1+495*3*2+385*4*3+315*8*4=19056mod(3465)=1731 x=693∗2∗1+495∗3∗2+385∗4∗3+315∗8∗4=19056mod(3465)=1731。
4
x mod (mn)=a,证明如下
x≡a(mod m)
x≡a(mod n)
令x=km+a,带入下式得 km+a≡a(mod n),即 km≡0(mod n),所以n | km,有m与n互素,所以n | k,k=tn,t为整数,所以x=tmn+a,x mod mn=a。证明完
5 CRT算法
def mul_reverse_element(a,m):
r0,r1,s0,s1=1,0,0,1
b=m
while(b):
q,a,b=a//b,b,a%b
r0,r1=r1,r0-q*r1
if a!=1:
return -1
else:
return (r0+m)%m
def CRT(a,b,p,q):
p1=mul_reverse_element(p,q)
q1=mul_reverse_element(q,p)
x=(a*q*q1+b*p*p1)%(p*q)
return x