所以关于扩展欧几里得算法,找到 , , 和 在方程 中的算法a
,b
其中d
和am+bn=d
是m
两个n
正整数,d
是它们的 GCD,并且a
和b
是两个整数(不一定是正数)
所以我正在关注的书有以下实现这个算法的说明:
E1. [Initialize.] Set a′ ← b ← 1, a ← b′ ← 0, c ← m, d ← n.
E2. [Divide.] Let q and r be the quotient and remainder, respectively,
of c divided by d. (We have c = qd + r and 0 ≤ r < d.)
E3. [Remainder zero?] If r = 0, the algorithm terminates;
we have in this case am + bn = d as desired.
E4. [Recycle.] Set c ← d, d ← r, t ← a′, a′ ← a, a ← t − qa, t ← b′, b′ ← b, b ← t − qb,
and go back to E2.
我的问题是我不是特别了解这个算法的所有数学,我对普通的欧几里得算法了解得足够好,所以我也了解了一半的扩展算法。我不明白a'
andb'
的需要t
(我知道这t
是一个临时变量,但我不明白a = t - qa
andb = t - qb
部分)。以及变量a
、a'
、b
和的初始化,b'
以及每次迭代时它们之间的值交换。任何人都可以帮助我弥合我对这个算法的理解中的这些差距吗?