线性同余方程及其特殊情况的求解法

讲线性方程前我们需要知道以下事实:
1) 任何两个整数a,b的最大公约数都可以写成形如sa + tb的形式,其中s和t为整数(由欧几里得算法的逆推可得)
2) ax mod m 等价于 ((a mod m)(x mod m)) mod m

1.线性同余方程
形如ax≡b(mod m)的同余式称为线性同余,其中m为正整数,a和b为整数,x为变量。
当x为未知数时,此式称为线性同余方程,求x的值称为求线性同余方程的解。
2.线性同余方程有解的充分必要条件
要求线性同余方程的解,我们需要知道在什么情况下线性同余方程有解。假设线性方程有解,则有:
ax – b = mk,其中k为某一整数。
变形可得:
ax – mk = b   (公式1)
假设x和k的最大公约数是y,则有:
a(x/y) – m(k/y) = b/y (其中x/y和k/y都为整数)
由事实1和公式1得gcd(a,m)=b/y,即gcd(a,m)|b。
于是我们得到了同余线性方程有解的必要条件,那么这个必要条件是否也是同余线性方程有解的充分条件呢?
设gcd(a,m)=b/y(y为一未知整数),则有:
ax1 – mk1 = b/y (x1和k1为两个未知整数)
公式变形得:
ax1y– mk1y = b
因为x1y和k1y都是未知的整数,于是有:
ax≡b(mod m)(x为一未知整数)
所以gcd(a,m)|b是线性同余方程有解的充分必要条件。

3.线性同余方程特殊情况的求解方法
观察线性方程,ax和b关于m同余。由事实2我们想到,如果a mod m 等于1那么不就可以将a从ax中约去,然后方程可以简化为求与b关于m同余的x。可遗憾的是a的值不是我们能左右的。但是,我们可以左右a与某数的乘积模m的余为1,因为我们知道ax,b关于m同余,两数乘以同一个数仍然关于m同余。
那么问题就在于是否存在一个数c,使ac mod m = 1呢?
我们假设存在这么一个数,则ac-1 = mk,其中k为某一个整数。此公式变形得:
ac + (-k)m = 1(方程2)
由事实1和方程2可知:当gcd(a,m)=1,即a和m互为素数时,才存在一个数c使得ac mod m = 1,在数学里我们将c这个值叫做a的模m逆。
所以当a和m互为素数时,解线性同余方程我们可以在同余方程式两边同时乘以整数c:
axc≡bc(mod m),约掉ac得x≡bc(mod m),然后x的值就是与bc关于m同余的数,可知x的值有无穷多个。

猜你喜欢

转载自wdr1991.iteye.com/blog/1768969