辗转相除法复杂度分析

斐波那契数列

  

:此时  

指数增长

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

欧几里得算法复杂度:

我们不妨设A>B>=1(若a<b我们只需多做一次模运算, 若B=0或A=B模运算的次数分别为0和1)

构造数列{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.

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

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

  Fn>1.618n/√5 

  b>1.618n/√5

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

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值