斐波那契数列

     对于数列a[n],递推公式为a[n+1]=pa[n]+qa[n-1],其特征方程为x^2=px+q (一个数列:X(n+2)=C1X(n+1)+C2X(n);设r,s使X(n+2)-rX(n+1)=s[X(n+1)-rXn];所以X(n+2)=(s+r)X(n+1)-srXn;C1=s+r并且C2=-sr;消去s就导出特征方程式r^2-C1*r-C2=0),即x^2-px-q=0,(1)若方程有两相异根α,β,则a[n]=c1·α^n+c2·β^n。(2)若方程有两等根α=β,则a[n]=(c1+nc2)·α^[n-1],其中 c1,c2 可由初始条件确定,初始条件通常为a[1]与a[2]。

     解法一:用循环运算,记录前两个值,再求该值。

     解法二:用上面罗列的特征方程求解:F(n)=F(n-1)+F(n-2),得F(n)的特征方程为x^2=x+1,有根x1=(1+5^0.5)/2且x2=(1-5^0.5)/2。F(n)=A*(x1)^n+B*(x2)^n。通过F(0)=0,F(1)=1,解得A=5^(0.5)/5,B=-5^0.5/5。

     解法三:分治策略。(Fn Fn-1)=(Fn-1 Fn-2)*A,求解得A=,(Fn Fn-1)=(F1 F0)*An-1。求解矩阵A的方幂用2进制快速求幂法:

a^m(mod n)算法,原理很简单,如a41就是a(101001)二进制,在从高位递推下去即可。

c=1;//c一开始取值是1很关键

for(j=k to 0)do{

     c=c*c(mod n);

     if(bj==1) thenc=c*a(mod n)

}

return c;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值