模线性方程理解

ax=b(mod n)  (1),

求解x

已知

ax+ny=gcd(a,n)  (2),对等式两边取模

ax=gcd(a,n)(mod n)  (3)

所以,原方程有解的条件是gcd(a,n)|b,即b=k*gcd(a,n);

所以,通过求解(2)可以得到x'

而x=x'*b/gcd(a,n)得到所求解

还有,所有解都可以表示为

x0+i*(n/gcd(a,n))  (i=1,2...)

所以,求最小解即为

x0=(x%(n/gcd(a,n))+n/gcd(a,n))%(n/gcd(a,n))

原文地址:https://www.cnblogs.com/wsruning/p/5663978.html