11.2.2 原路折返解法
有关初等数论的教材中展示辗转相除后,一般会附上一个推论:
若a,b是任意两个不全为零的正整数,则存在两个整数s,t使得
as+bt=d。
如果a,b互素,可记作(a,b)=d=1。
杜德利在《基础数论》[1]中举了个例子,对5767,4453实施欧几里得算法,有最大公约数:(5767,4453)=73。解法的核心是“利用一系列带余除法公式原路折返,就能解出ax+by=d型的不定方程”。
把5767和4453辗转相除,5767-4453=1314,4453-3×1314=511,1314-2×511=292,511-292=219,292-219=73,可记为(5767,4453)=73。原路折返,将欧几里得算法倒推上去,则有x=17和y=22,使17×5767-22×4453=73。
《基础数论》原文照录如下:
定理4 若(a,b)=d,则有x和y使ax+by=d。
证明 其想法是:将欧几里得算法倒推上去。以(5767,4453)=73这一计算为例,算法中最后一个给出
73=292-219。
我们用它前面一个式子,将73表为511和292的一个组合:
73=292-(511-292)=2×292-511。
再用更前面一个式子来消去292:
73=2×(1314-511×2)-511=2×1314-5×511。
依次类推,有
73=2×1314-5(4453-3×1314)=17×1314-5×4453。
最后,我们可把1314用4453和5767表出,从而求得所要之表达式:
73=17×(5767-4453)-5×4453=17×5767-22×4453。
于是,若(5767,4453)=73,则有x=17和y=22,使17×5767-22×4453=73,即ax+by=d。
我们称此法为二元一次不定方程的原路折返解法。从辗转相除所得最大公约数出发,回过头来,维持最大公约数不变,利用辗转相除各式一步步消去,形成最大公约数等于整数对与x,y乘积之差。再与原最大公约数式子比较,就得到一个x值和一个y值。