欧几里德算法复杂度分析

欧几里德算法复杂度分析欧几里得算法functionEuclid(a;b)1:ifb=0then2:returna;3:endif4:returnEuclid(b;amodb);复杂度分析:设a&gt;=ba&gt;=ba>=b,则有amodb&lt;a2amodb&lt;a2a\modb<\frac{a}{2}证明:假设a=bq+ra=bq…

大家好,欢迎来到IT知识分享网。欧几里德算法复杂度分析"

欧几里得算法

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

复杂度分析:
a>=b a >= b ,则有 amodb<a2 a mod b < a 2
证明:
假设 a=bq+r a = b q + r ,其中 q>=1 q >= 1 ,且 0<=r<b 0 <= r < b ,
则有:
r=abq<b r = a − b q < b
因此:
a<b+bq a < b + b q 即 ==> a<b(1+q) a < b ( 1 + q )
于是:
11+q×a<b 1 1 + q × a < b

==> a1+qb<0 a 1 + q − b < 0
==> aq1+qbq<0 a q 1 + q − b q < 0
==> aq1+q+a1+qbq<a1+q a q 1 + q + a 1 + q − b q < a 1 + q
===> abq<a1+q a − b q < a 1 + q
因为 a>=b a >= b ,所以有 q>=1 q >= 1 ,于是: a1+q<=a1+1 a 1 + q <= a 1 + 1
所以有: abq<a1+q<=a2 a − b q < a 1 + q <= a 2
即: amodb<a2 a mod b < a 2 ,每迭代一轮,a,b都会变成原来的一半!
因为算法的终止条件是a或b被处理为0为止。
于是复杂度为: min(O(loga),O(logb)) m i n ( O ( l o g a ) , O ( l o g b ) ) 即O(logn)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15774.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信