斐波那契数列
注:此时
指数增长
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 ).