版权声明:本文为博主jmh原创文章,未经博主允许不得转载。 https://blog.csdn.net/jmh1996/article/details/82709146
欧几里得算法
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被处理为0为止。
于是复杂度为:
即O(logn)