欧几里得算法:
首先,欧几里得算法就是来求两个数的最大公约数。
原理就是:设a>=b>=0 。
当b=0时,gcd(a,b)=a
当b>0时,gcd(a,b)=gcd(b,y) a=b*q+y
所以求解最大公约数就是对这个过程进行迭代处理。
现在我们来写一下这个过程。
已知两个数的a ,b 。(a>b)求公约数的计算过程。
d=gcd(a,b) ,这个式子中的d就是就是这两个数的最大公约数。
设:a=qb+y 。 y就是a除以b的余数,
欧几里得算法就是对这一个过程进行迭代。
现在我们为了更好地表示计算的过程,我们把符号化成
……
最后的那个y_n就是我们想要求的最大公约数。
扩展的欧几里得算法
在欧几里得算法中的那个商并不是没用的,在扩展的欧几里得算法里面那个商是非常有用的,它是欧几里得算法的关键。首先,我们在最大公约数表示定理里面有一个式子:
as+bt=d。
即
扩展的欧几里得算法就是来求这个式子中的s和t。
由上面的扩展的欧几里得算法迭代的计算过程,我么可以得出
所以可以得出
s_0=1 ,s_1=0
t_0=0 ,t_1=1
在对上面的进行验证。
所以上面的s_i 和t_i 就是我们要求的s和t 。
现在我们用一个具体的例子来讲解一下这个算法。
假设36和16 ,gcd(36,16)=4
现在我们要来求解36*s+16*t=4。 我们要用扩展的欧几里得算法来求解s和t。
第一步:36=16*2+4
第二步:16=4*4
余数为零时,迭代就停止了。
所以现在我们得出了我们所需要的s和t。
s=1,t=-2。36*1+16*(-2)=4
好了,验算成功。
我举的例子是一个比较简单的例子,只迭代了一次,有的话可能要迭代几次。
好了,扩展的欧几里得算法就这样。