【斐波那契数列的由来】
一个人到集市上买了一对小兔子。一个月后这对小兔子长成一对大兔子。然后这对大兔子每过一个月就可以生一对小兔子,而每对小兔子也都是经过一个月可以长成大兔子,长成大兔后也是每经过一个月就可以生一对小兔子。那么从此人在市场上买回那对小兔子算起,每个月后他拥有多少对小兔子和多少对大兔子?这是一个有趣的问题。当你将小兔子和大兔子的对数算出以后你将发现这是一个很有规律的数列,而且这个数列与一些自然现象有关。人们为了纪念这位兔子问题的创始人,就把这个数列称为斐波那契数列。
【性质1】斐波那契与黄金分割
1÷1=1,1÷2=0.5,2÷3=0.666...,3÷5=0.6,5÷8=0.625…………,55÷89=0.617977……………144÷233=0.618025…46368÷75025=0.6180339886…...
越到后面,这些比值越接近黄金比,即FN/FN+1≈0.618
【性质2】
证明:根据辗转相减法则
gcd(F[n+1],F[n])
=gcd(F[n+1]-F[n],F[n])
=gcd(F[n],F[n-1])
=gcd(F[2],F[1])
=1
【性质3】
证明:
=gcd(F[n+1]F[m]+F[n]F[m-1],F[n]);
=gcd(F[n+1]F[m],F[n]);
=gcd(F[n+1],F[n])*Gcd(F[m],F[n])
=gcd(F[m],F[n]);
于是:gcd(F[n],F[m])=F[gcd(n,m)];
【性质4】
【性质5】 gcd(F[n],F[m])=F[gcd(n,m)]
【有关习题】
【原题链接】
洛谷1225 :数楼梯
楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编一个程序,计算共有多少种不同的走法。
【解法分析】
【代码实现】
#include
#define MAXL 100000
using namespace std;
int n;
string s="2",ss="1",temp;//ss、s分别赋初值第一项、第二项
string add(string s1,string s2)//高精度加法
{
}
int main()
{
}