欧几里德算法复杂度分析

欧几里得算法

function Euclid(a; b) 1: if b = 0 then 2: return a; 3: end if 4: return Euclid(b; a mod b);

复杂度分析:
设 a>=ba >= b ,则有 amodb 证明:
假设a=bq+ra = b q + r ,其中q>=1q >= 1 ,且 0<=r 则有:
r=a?bq
因此:
aa 于是:
11+q×a 【欧几里德算法复杂度分析】==>a1+q?b<0a 1 + q ? b < 0
==> aq1+q?bq<0a q 1 + q ? b q < 0
==> aq1+q+a1+q?bq ===>a?bq 因为 a>=ba >= b ,所以有 q>=1q >= 1 ,于是: a1+q<=a1+1a 1 + q <= a 1 + 1
所以有: a?bq 即: amodb 因为算法的终止条件是a或b被处理为0为止。
于是复杂度为: min(O(loga),O(logb))m i n ( O ( l o g a ) , O ( l o g b ) )即O(logn)

    推荐阅读