关于扩展欧几里得算法与合同式之间的关系
已知:
一次同余式:\(ax≡b(mod m)\)
(1) \(gcd(a,m)=1\),\(b\)任意,唯一解
(2) \(gcd(a,m)=d>1\),\(d\nmid b\),无解
(3) \(gcd(a,m)=d>1,d\mid b\),d个解,
\(α,α+m/d,α+2m/d,...α+(d-1)m/d\),
\(α\)是\((a/d)x≡(b/d)(mod m/d)\)的唯一解
上述公式只是手算方便,但是写代码比较麻烦,下面推导该公式与exgcd(a,m,x,y)的关系
\(exgcd(a,m,x,y) \Leftrightarrow ax + my = gcd(a,m)\)
\(d = gcd(a,m)\)
\(xa + ym = d \Leftrightarrow ax ≡ d (mod m)\)
——exgcd(a,m,x,y)获得了d,x,y
——其中的x,是\(ax ≡ d (mod m)\)的解
——不是\(ax ≡ b (mod m)\)的解
——下面通过放缩,得到a,m,b合同式的解
如果\(d \nmid b\),无解
否则\(d \mid b\),同乘\(b/d\)
\(ax(b/d) ≡ d(b/d) (mod m) \Leftrightarrow a(x(b/d)) ≡ b(mod m)\)
——\(x(b/d)\)是整数,也正是\(ax ≡ b (mod m)\)的解
——\(x(b/d)\)归约到\(mod(m/d)\),即为\(α\)
——\(a= x(b/d) mod(m/d)\)
而这个\(α\)也是\((a/d)x ≡ b/d (mod (m/d))\)的解!
\(m \mid (aα-b) \Rightarrow m/d \mid (a/dα-b/d)\)
综上,exgcd(a,m,x,y)得到\(ax ≡ d (mod m)\)的解x,方程放缩得到\(ax ≡ b (mod m)\)的特解为x(b/d),这个特解就是mod(m/d)意义下\((a/d)x ≡ b/d (mod (m/d))\)的解\(α\)

浙公网安备 33010602011771号