欧几里德算法:
给定的两个整数m,n,求它们的最大公因子。
算法很简单,使用碾转相除法
描述: E1 r=m%n
E2 if r= 0
return n(即为最大公因数)
else
m = n;n = r;返回 E1
平均比较次数Tn=(12*ln2)/pi^2)*lnn
扩展的欧几里德算法:
给定的两个正整数a,b,计算它们的最大公因子d和两个整数a和b,使得ax+by=d
要证明这个定理,首先需给出一个定理
带余除法:
若a,b是两个整数,其中b>0,则存在两个整数q,r,使得
a = b*q + r 0<=r<b
,并且q和r是唯一的。
这个定理证明是简单的,有了这个定义,我们就来证明欧几里德算法
|
现在就需要反推回去,可以得到r可以用a,b线性表示
|
|
算法描述
|
http://blogold.chinaunix.net/u/32610/showart_353805.html