第六章 线性方程与最大公因数
书上有一段是这样写的:
本章就是要研究与方程 ax + by = gcd(a,b) 有关的性质和结论。
解法,用欧几里德算法,也就是5.1介绍的算法。
数论,都是研究整数范围之内的东西,
既然是讨论整数解的问题,那么就会先考虑在何种情况下有解,在何种情况下无解。
所以这里也是一样,研究的是线性方程和整数解的关系。
ax + by = gcd(a,b)
这个其实是特殊的形式,
解法用的是欧几里德算法。
对于一般形式
如果对于一般形式:ax+by=c,我们可以在左边提出公因式gcd(a,b),那么得到
也就是说,左边能保证是一个整数,因为x和y是我们要求的整数解,而显然有gcd(a,b)|a和gcd(a,b)|b,因此如果右边c不能整除gcd(a,b),那么这个方程显然是无解的,也就是说,这个方程如果c不是gcd(a,b)的倍数,那么该方程无解。
那如果c是gcd(a,b)的倍数,是不是一定有解呢?如果ax+by=gcd(a,b)有解x'和y',那么ax+by=k*gcd(a,b)也一定有解,因为可以让x'和y'同乘以k得到一组解满足该方程,其实可以用欧几里得算法求ax+by=gcd(a,b)的解,解法如下:
其中左边是我们熟悉的欧几里得算法,右边是将欧几里得算法的加法变成了减法,而a和b的最大公约数rn-1最终也能写成 k'a+k''b的形式,因此总能找到ax+by=gcd(a.b)的整数解,那么综上所述,式ax+by=c,如果c是gcd(a,b)的倍数,那么该式总能找到整数解,否则找不到整数解。因为该算法是由欧几里得算法拓展而来,故名为拓展欧几里得算法。
那么得到了ax+by=gcd(a,b)的一个特解,那么如果得到了gcd(a,b)=1时的通解,那么gcd(a,b)<>1的通解就很显而易见了。当gcd(a,b)=1时,通解应该是(x'+kb,y'-ka),因为将其代入公式a(x'+kb)+b(y'-ka)=ax'+by'=c,另外也可以从几何上考虑,做出ax+by=gcd(a,b)的图像,在此假设a=2,b=3,因此gcd(a,b)=1
其中的点为x和y均为整数的点,假设我们确定了(x',y'),那么求下一个x''和y''可以假设
因为要求x''和y''要是整数,故t为b的倍数,因此将t=kb代入上述方程组中即得到下一个解。而当gcd(a,b)<>1时,可以将gcd(a,b)除到左边,即: