辗转相除法复杂度分析

斐波那契数列

  

:此时  

指数增长

  F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

欧几里得算法复杂度:

我们不妨设A>B>=1(若a

构造数列{Un}:

  U0=a, U1=b, Uk=Uk-2 mod Uk-1 (k>=2)

若算法需要n次模运算, 则有

  Un=gcd(a, b), Un+1=0

我们比较数列{Un}和菲波那契数列{Fn}

  F0=0,F1=1<=Un ,F2=1<=Un-1

又因为由  

  Uk mod Uk+1=Uk+2

可得    

  Uk>=Uk+1+Uk+2     (Uk=r·Uk+1+Uk+2,r>=1) 

由数学归纳法得到 :   

  Uk>=Fn-k+1

于是得到:

  A=U0>=Fn+1

  B=U1>=Fn

也就是说如果欧几里得算法需要做n次模运算, 则B必定不小于Fn.

换句话说, 若 Bn, 则算法所需模运算的次数必定小于n.

根据菲波那契数列的性质, 有

  Fn>1.618n/√5 

  b>1.618n/√5

所以模运算的次数为 O( lg B ).

 

转载于:https://www.cnblogs.com/Bird-Xu/p/8180036.html

你可能感兴趣的:(辗转相除法复杂度分析)