形如\(ax\equiv c\ (mod\ b)\)的方程叫為線性同余方程.
對於\(ax\equiv c\ (mod\ b)\),我們可以得出\(ax+by=c\),又根據裴蜀定理,\(x,y\)有整數解的充要條件為\(gcd(a,b)|c\),即\(c\)一定是\(gcd(a,b)\)的倍數,我們可以根據\(ax+by=gcd(a,b)\)求出\(x_0\)和\(y_0\)作為一組特解,即:\(ax_0+by_0=c\),此時對兩邊同時除以\(gcd(a,b)\),然后再乘\(c\),此時的\(x=\frac{c}{gcd(a,b)}x_0\)就是線性同余方程的一個解.
接下來,我們要求通解,假設原方程有兩個解\(x_i,y_i\)和\(x_j,y_j\),則有:
\(ax_i+by_i=c\)
\(ax_j+by_j=c\)
那么我們聯立得到:
\(a*x_i+b*y_i=a*x_j+b*y_j\)
\(a(x_i-x_j)=b(y_j-y_i)\)
然后我們在左右兩邊同時除以\(d=gcd(a,b)\):
\(\frac{a}{d}*(x_i-x_j)=\frac{b}{d}(y_j-y_i)\)
我們知道當\(a\)和\(b\)都同時除以它們的\(gcd(a,b)\)后,\(a\)和\(b\)一定是互質的.
那么根據等式關系,我們可以得出結論並同時假設:\(\frac{b}{d}\)一定是\(x_i-x_j\)的倍數.那么因為\(\frac{b}{d}\)是\(x_i-x_j\)的倍數,所以\(y_i-y_j\)一定是\(-\frac{a}{d}\)的倍數.
那么我們就推出了對於任意兩個解\(x\)的值之差,一定是\(\frac{b}{a}\)的倍數,同理於\(y\).
所以我們就得出了通解:
\(x=x_0+\frac{b}{gcd(a,b)}*t\)
\(y=y_0-\frac{a}{gcd(a,b)}*t\)
注意,上面兩個通解公式只能選擇其中一個,另一個需要在原方程中推出.
這兒的\(x_0\)和\(y_0\)就是我們前面用\(exgcd\)求出的一個特解,但是題目往往要我們找最小的解,對於我們可以假設:
\(x_0=x_{min}+\frac{b}{gcd(a,b)}*t\)
別想那么多,就根據數學上的整除余數可以很容易得到:
\(x_{min}=x_0\ mod\ \frac{b}{gcd(a,b)}\)
這就是我們要求的最小整數解,如果要求是正數的話:\(x_{min}=(x_0+\frac{b}{gcd(a,b)})\ mod\ \frac{b}{gcd(a,b)}\)
本人菜雞,如有紕漏,歡迎指正 😃)