初等数论(第三版)
上QQ阅读APP看书,第一时间看更新

1.1 一次不定方程的求解

定理1不定方程(1)有解的充分必要条件是它的系数的最大公约数(a1,…,ak)|c.进而,不定方程(1)有解时,它的解和不定方程

的解相同,这里g=(a1,…,ak).

必要性显然.下面来证充分性.若g|c,设c=gc1.由第一章4定理8知,必有整数y1,0,…,yk,0,使得

a1y1,0+…+akyk,0=g.(3)

因此x1=c1y1,0,…,xk=c1yk,0即为(1)的一组解,这就证明了充分性.由于(1)有解时必有g|c,而这时不定方程(1)和(2)是同一个方程,这就证明了后一结论.

定理1表明讨论不定方程(1)的关键是讨论它的系数的最大公约数g.关于两个变数的情形有下面更精确的定理.

定理2设二元一次不定方程

a1x1+a2x2=c(4)

有解,x1,0,x2,0是它的一组解,那么它的所有解为

容易直接验证由式(5)给出的x1,x2,对所有整数t都满足不定方程(4).反过来,设x1,x2是(4)的一组解.我们有

a1x1+a2x2=c=a1x1,0+a2x2,0

进而有

a1(x1-x1,0)=-a2(x2-x2,0),

例1求10x1-7x2=17的全部解.

容易看出,(10,7)=1,所以方程有解.由视察法可得x1,0=1,x2,0=-1是一组特解.因此全部解是

x1=1-7t,x2=-1-10t,t=0,±1,±2,….

例2求18x1+24x2=9的解.

由(18,24)=6|/9知无解.

求解不定方程(4),必须(i)求出最大公约数g=(a1,a2),并判断是否有g|c;(ii)若g|c,即有解,则设法去求出一组特解x1,0,x2,0.由定理1及3定理5知,我们可以用辗转相除法来求特解.下面我们通过具体例子来介绍一种判定方程是否有解、及有解时求出其解的直接算法.这种算法对k>2的情形也适用.

例3求907x1+731x2=2107的解.

解若有解,则731必整除-907x1+2107,所以由原方程得

(注:以上两步是,先解出系数绝对值较小的变数,这里是x2,再作变数替换,把x2变为x3(为什么).这就得到一个新的不定方程:176x1+731x3=-86.把原来关于x1,x2的不定方程转化为关于x1,x3的不定方程,且其系数绝对值比原方程小.下面就是反复这样做.)

这样就求出了全部解:

x1=-258+731x6,x2=323-907x6,x6=0,±1,±2,….

细心的读者不难发现,这种解不定方程的算法实际上是对整个不定方程用辗转相除法(见第一章3),依次化为等价的不定方程,直至得到有一个变元的系数为±1的不定方程为止(在上例中是x5-13x6=-5),这样的不定方程是可以直接解出的(这里是x5=-5+13x6,x6=0,±1,±2,…).再依次反推上去,就得到原方程的通解.为了减少运算次数,在用带余数除法时,我们总取绝对最小余数.如果不定方程无解,则在施行这种算法时,到某一步就会直接看出,下面来举一个例子.

例4求117x1+21x2=38的解.

解由原方程得

最后一式表明:x3,x4不可能同时为整数,所以不定方程无解.

下面来举一个用这种算法解三元一次不定方程的例子.

例5求15x1+10x2+6x3=61的全部解.

x3的系数的绝对值最小,我们把原方程化为

解得x1=1+2x5,x5=0,±1,±2,….

反推上去依次解出

x2=3x4+x1+x5=1+3x4+3x5,x4,x5=0,±1,±2,….x3=-2x1-2x2+10+x4=6-5x4-10x5,x4,x5=0,±1,±2,….

这就得到了原不定方程的通解,其中含有两个参数x4,x5.

下面的定理表明:一般的k元一次不定方程可化为解由k-1个二元一次不定方程构成的方程组,且它的通解中恰有k-1个参数.

定理3设g1=a1,g2=(g1,a2)=(a1,a2),g3=(g2,a3)=(a1,a2,a3),…,gj=(a1,…,aj),…,gk=(gk-1,ak)=(a1,…,ak),那么不定方程(1)等价于下面的有2(k-1)个整数变数x1,…,xk,y2,…,yk-1,k-1个方程的不定方程组:

当方程(1)有解时,它的通解由有k-1个参数的线性(即一次)表达式给出.

先来证等价性.若x1,…,xk,y2,…,yk-1是方程组(6)的解,则显见x1,…,xk是(1)的解.反之,若x1,…,xk是(1)的解,则取

显见,yj是整数,且x1,…,xk,y2,…,yk-1是(6)的解.由定理1容易看出,方程组(6)的第一个方程和方程(1)一样,有解的充分必要条件是gk|c.而(6)的其余的方程,当把yj看做参数(取整数值)时,每个变数为yj-1,xj的二元一次不定方程

gj-1yj-1+ajxj=gjyj(7)

总是可解的(注:这里当j=2时,规定x1=y1.),这里j依此取k-1,…,2.一定可以找到y(0)j-1,x(0)j,使

gj-1y(0)j-1+ajx(0)j=gj,(8)

这样yjy(0)j-1,yjx(0)j就是(7)的一组特解,由定理2知,(7)的通解是

tj-1=0,±1,±2,…(2≤j≤k-1).

当(1)有解,即gk|c时,方程组(6)的第一个方程可解,且由定理2知,其通解是(yk-1,0,xk,0是一组特解)

tk-1=0,±1,±2,….

式(10)已经给出了yk-1和xk的参数tk-1的表达式(注:这里所说的参数表达式都是线性(即一次)的,下同.).由yk-1的参数表达式及式(9)(j=k-1)可得到yk-2和xk-1的参数tk-1,tk-2的表达式;进而由yk-2的参数表达式及式(9)(j=k-2)可得到yk-3和xk-2的参数tk-1,tk-2,tk-3的表达式;依次就得到yj-1和xj(j=k-3,…,2)的参数tk-1,…,tj-1的表达式.这就给出了方程组(6)变元x1,…,xk,y2,…,yk-1(注意x1=y1)的通解公式(为什么),其中有k-1个参数t1,…,tk-1.显见,其中的一部分——x1,…,xk的参数表示式就给出了不定方程(1)的通解公式(为什么).证毕.

以上定理的证明读者可能会感到“复杂”,不习惯.下面仍以例5为例,说明如何用定理3的方法来解k(>2)元一次不定方程.读者可以先看下面的例6,有一个感性认识后,再看定理3的证明.

例6求15x1+10x2+6x3=61的解.

用定理3的方法来解.a1=15,a2=10,a3=6,所以g1=a1=15,g2=(a1,a2)=(15,10)=5,g3=(g2,a3)=(5,6)=1.因此这不定方程等价于4个变数、两个方程的不定方程组:

15x1+10x2=5y2的通解是

x1=y2+2t1,x2=-y2-3t1,t1=0,±1,….

5y2+6x3=61的通解是

y2=5+6t2,x3=6-5t2,t2=0,±1,….

消去y2就得到原不定方程的通解:

x1=5+2t1+6t2,x2=-5-3t1-6t2,x3=6-5t2

t1,t2=0,±1,….

比较得到的两个通解公式,可以发现含有的参数个数都是两个,但具体的表示形式却有很大不同,这是由于所用的解法不同引起的,而实质上是一样的.关于这一点将在习题中讨论.

定理3已经涉及比较简单的一次不定方程组的问题,对这一问题的讨论比较繁,要用到一些整数矩阵的知识,这里不作进一步讨论了.有兴趣的读者可参看文献[3],[5].有一些不定方程要求它的正解或非负解,即变数取正整数或非负整数的解,这在应用中是很常见的.例如下面的例9.下面我们将讨论两个变数的情形.