严格证明扩展欧几里得算法的正确性

严格证明扩展欧几里得算法的正确性

引理一:\(m\mid x_i, i\in[1, k]\),则\(m\mid a_1x_1+\dots + a_kx_k, a_i\in Z\)

​ 证明:设\(mb_i=x_i\),则\(a_1x_1+\dots+a_kx_k=a_1mb_1+\dots+a_kmb_k=m(a_1b_1+\dots+a_kb_k),m \mid m(a_1b_1+\dots+a_kb_k)\)

引理二:设正整数\(m \mid (a_1,\dots,a_k)\),则\(m(\frac{a_1}{m},\dots,\frac{a_k}{m})=(a_1,\dots,a_k)\)

​ 证明:设\(D=(a_1,\dots,a_k)\),由\(m \mid D\),\(D \mid a_j\),得\(m \mid a_j\)(假定了整除满足同乘同除一个数依然成立),\(\frac{D}{m} \mid \frac{a_j}{m}\),因此\(\frac{D}{m}\)\(\frac{a_i}{m}\)的公约数,有\(\frac{D}{m}\le(\frac{a_1}{m},\dots,\frac{a_k}{m})\)

​ 另一方面,若\(d\mid \frac{a_j}{m},1\le j\le k\),则\(md \mid a_j,j=1,\dots,k\)。由于\(D\)\(a_j\)的最大公约数,所以\(md\le D\)\(\frac{D}{m} \ge d\)

​ 取\(d=(\frac{a_1}{m},\dots,\frac{a_k}{m})\),则可得\(\frac{D}{m}=(\frac{a_1}{m},\dots,\frac{a_k}{m})\)

​ 两边同乘\(m\),可得\(m(\frac{a_1}{m},\dots,\frac{a_k}{m})=D=(a_1,\dots,a_k)\)

​ 将\(m=(a_1,\dots,a_k)\)代入上式,即得 \((\frac{a_1}{(a_1,\dots,a_k)},\dots,\frac{a_k}{(a_1,\dots,a_k)})=1\)


定理一: \((x_1, \dots , x_k)=min\{s=a_1x_1+\dots+a_kx_k,s\in A, s>0, a_i\in Z\}\)

​ 证明:设\(s_{min}=a_1'x_1+\dots +a_k'x_k\)。对于任意\(d\mid x_i\),由引理可得\(d\mid s_{min}\),因此\((x_1, \dots, x_k)\mid s_{min}\)\((x_1, \dots, x_k)\le s_{min}\)

​ 又因为\(x_i\% s_{min}\in [0, s_{min})\)【不严格】,且\(s_{min}\)\(A\)中的最小正元素,所以\(x_i\% s_{min}=0\),即\(s_{min} \mid x_i\)

​ 所以\(s_{min}\)\(x_i\)的公约数,小于等于最大公约数。即\(s_{min}\le (x_1,\dots,x_k)\)

​ 综上,可得\((x_1,\dots, x_k)=s_{min}\)

推论一:一定存在一组整数\(a_1', \dots, a_k'\),使得\((x_1, \dots, x_k)=a_1'x_1+\dots+a_k'x_k\)。这是因为\((x_1, \dots, x_k)=s\in A\),而\(A\)中的元素表示为\(a_1x_1+\dots +a_ks_k\)。因此一定存在一组整数表示\((x_1,\dots,x_k)=s\)

推论二:\((x_1,\dots,x_k)\mid a_1x_1+\dots+a_kx_k,a_i\in Z\)。这是因为\((x_1,\dots,x_k)\mid x_i\),根据引理推论二得证。


【注】本节的\(a\)\(x\)与前两节的位置是互换了的。

设整数\(k \ge 2\)\(a_1,\dots,a_k\)是整数且不等于零,\(c\)是整数,\(x_1,\dots,x_k\)是整数变数,方程\(a_1x_1+\dots+a_kx_k=c\)称为k元一次不定方程,\(a_1,\dots, a_k\)称为它的系数。

定理二 k元一次不定方程有解的充要条件是\((a_1,\dots,a_k)\mid c\)

​ 证明:首先证明充分性。根据推论一,必定存在一组整数\(x_1',\dots,x_k'\),使得\(a_1x_1'+\dots+a_kx_k'=(a_1,\dots,a_k)\)。新方程的解之一就是\(x_i=x_i'\frac{c}{(a_1,\dots,a_k)}\)

​ 然后证明必要性。根据推论二,\((a_1,\dots,a_k)\mid a_1x_1+\dots+a_kx_k=c\),必要性直接得证。


定理三 设二元一次不定方程\(a_1x_1+a_2x_2=c\)有解,\(x_{1,0},x_{2,0}\)是它的一组解,那么它的所有解为

\[\left \{ \begin{aligned} x_1=x_{1,0}+\frac{a_2}{(a_1,a_2)}t, \\ x_2=x_{2,0}-\frac{a_1}{(a_1,a_2)}t, \end{aligned} \right. t=0,\pm1,\pm2,\dots \]

​ 证明:容易验证对于所有给出的解\(x_1,x_2\),对于所有整数\(t\)都满足不定方程4。

​ 反过来,设\(x_1,x_2\)是方程的一组解,我们有\(a_1x_1+a_2x_2=c=a_1x_{1,0}+a_2x_{2,0}\),进而有\(a_1(x_1-x_{1,0})=-a_2(x_2-x_{2,0})\)\(\frac{a_1}{(a_1,a_2)}(x_1-x_{1,0})=-\frac{a_2}{(a_1,a_2)}(x_2-x_{2,0})\)

​ 根据引理二,\((\frac{a_1}{(a_1,a_2)},\frac{a_2}{(a_1,a_2)})=1\),而上式可以转化为\(\frac{a_2}{(a_1,a_2)}\mid \frac{a_1}{(a_1,a_2)}(x_1-x_{1,0})\)。根据定理\((m,a)=1,m\mid ab\Rightarrow m \mid b\)(可用算数基本定理证明【不严格】),\(\frac{a_2}{(a_1,a_2)} \mid (x_1-x_{1,0})\)

​ 因此,\(x_1=x_{1,0}+\frac{a_2}{(a_1,a_2)}t\)\(x_2=x_{2,0}-\frac{a_1}{(a_1,a_2)}t\),这就证明了满足二元一次不定方程的解一定满足上述解的前面的通式。


求解二元一次不定方程需要用到扩展欧几里得算法。

我们现在需要求出方程\(ax+by=z\)的解\((x,y)\)。根据定理二,方程\(ax+by=z\)有解等价于\((a,b) \mid z\),因此我们只要先求出方程\(ax+by=(a, b)\)的解,再将解的值乘上\(\frac{z}{(a,b)}\),就求出了原方程的一组解。

那么,如何求解\(ax+by=(a,b)\)?考虑欧几里得算法\((a,b)=(b, a\%b)\),设\(bx'+(a\%b)y'=(b,a\%b)=(a,b)=ax+by\)

\(bx'+(a\%b)y'=bx'+(a-b\lfloor\frac{a}{b}\rfloor)y'=ay'+b(x'-\lfloor \frac{a}{b}\rfloor)\)

可以发现\(x=y',y=x'-\lfloor \frac{a}{b}\rfloor\)就是方程\(ax+by=(a,b)\)的一组解。

不断地列出\(ax+by=ay'+b(x'-\lfloor\frac{a}{b}\rfloor)\),代入\(x=y',y=x'-\lfloor \frac{a}{b}\rfloor\)求解,最后就能求出\(ax+by=(a,b)\)的某一组解\((x_0,y_0)\)。在这之后再利用定理三求出通解:

\[\left \{ \begin{aligned} x_1=x_{1,0}+\frac{a_2}{(a_1,a_2)}t, \\ x_2=x_{2,0}-\frac{a_1}{(a_1,a_2)}t, \end{aligned} \right. t=0,\pm1,\pm2,\dots \]

就完成了解二元一次不定方程的过程。

打【不严格】的部分是为了可读性省略的部分。如果展开会引入一些过长的概念。

参考资料:潘承洞《初等数论》

posted @ 2019-07-19 18:58  pechpo  阅读(416)  评论(0编辑  收藏  举报