在《程序设计艺术》中关于扩展欧几里得归纳算法中有个公式:
a = a' - qa; b = b' -qa,推导如下:
(1)根据:https://www.math.cmu.edu/~bkell/21110-2010s/extended-euclidean.html
中的除法算法: n = qd + r 且 0<= r < d ; =》r = n -qd;
根据对如下数字序列观察:
序号 | a | b | c | d | q | r | 除法公式余数表达 (注:m=1769; n=551) |
1 | 0 | 1 | 1769 | 551 | 3 | 116 | 116=m+(-3)n |
2 | 1 | -3 | 551 | 116 | 4 | 87 | 87 = -4m + 13n |
3 | -4 | 13 | 116 | 87 | 1 | 29 | 29 = 5m +(-16)n |
4 | 5 | -16 | 87 | 29 | 3 | 0 | |
可以看出如下规律:
d为当前最终值,c1,c2,c3...cn序列可以看出前一段的值;其中 =; ci=ri-2;
(, , , )为 a,b, c, d的上一阶段的值;
m=1769; n=551 | ||
116=m+(-3)n | a1 m + b1n =c1 | a’m + b'n =c |
87 = -4m + 13n | a2m + b2n = c2 | |
29 = 5m +(-16)n | a3m + b3n =c3 | |
0= 5m +(-16) n | am+bn =d | am+bn = d |
等式: a'm+b'n =c (公式1)和 am+bn= d(公式2)总是成立。 将c = qd+r代入得出:
a'm + b'n = q(am+bn) + r =>r = (a'-qa)m + (b'-qb)n (公式3)。
公式3不改变 公式1和2的形式, 即公式1和2成立,则3也成立(注:公式3表示当前的值)。
上述是数学归纳证明,下面找递推公式,就是找出 (, , , , ) <--(,,,,, )之间的关系:
由上述关系1:= ==》= -
由上述关系2: = ==》 =- 进一步推导出:
= ( - ) m + ( -)n (I)
同时: = m + n (II);
由上可以推导出: = - ;
= -
即a m + b n = d 的系数 a,b的递推公式