本篇由本人原博客搬运至此。
感谢 R_rank_Pyramid 对于 2 部分的指正。
同余方程组,是形如
的方程组。
当 p1,p2,...,pn p 1 , p 2 , . . . , p n 互质的时候,我们可以使用中国剩余定理。但如果他们不互质呢?
这里先介绍一下裴蜀定理与扩展欧几里得算法作为铺垫。
裴蜀定理:对于不完全为 0 0 的非负整数 a,b a , b , (a,b) ( a , b ) 表示 a,b a , b 的最大公约数。则必然存在整数对 x,y x , y ,使得
具体证明略。
扩展欧几里得算法则是对这个方程求解的算法。
比如我们先合并前两个方程。
根据余数的定义,我们可以将方程改写为
即 p1u−p2v=x2−x1(3) p 1 u − p 2 v = x 2 − x 1 ( 3 )
根据裴蜀定理,令 p0=(p1,p2) p 0 = ( p 1 , p 2 )
若 x2−x1≢0(modp0) x 2 − x 1 ≢ 0 ( mod p 0 ) ,方程无解。
若 x2−x1≡0(modp0) x 2 − x 1 ≡ 0 ( mod p 0 ) ,则可化为
现将方程 (4) ( 4 ) 改为 p1p0u−p2p0v=1 p 1 p 0 u − p 2 p 0 v = 1
根据扩展欧几里得算法可得特解 u0,v0 u 0 , v 0 。
然后将解乘上 x2−x1p0 x 2 − x 1 p 0 ,
则可得 u1=u0×x2−x1p0 u 1 = u 0 × x 2 − x 1 p 0 , v1=v0×x2−x1p0 v 1 = v 0 × x 2 − x 1 p 0
则方程 (3) ( 3 ) 的通解为
任选一个代入方程 (1) ( 1 ) 或 (2) ( 2 ) 中,比如我代入 (1) ( 1 ) ,则
因为 (a,b)×[a,b]=ab ( a , b ) × [ a , b ] = a b ,所以 [p1,p2]=p1p2p0 [ p 1 , p 2 ] = p 1 p 2 p 0
则前两个同余方程可以化为
的形式。以此类推即可。