Fibonacci数列的性质

Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, .... F[0] = 0;

1: gcd(Fn, Fm) = F[gcd(n, m)]; 当n - m = 1 或 2时满足,可用数学归纳法证明;

2: 特征方程为 x^2 = x + 1, 类Fibonacci数列的特征方程为:ax^2 = bx + c; aF[n] = bF[n - 1] + cF[n - 2];

3: (证明方法为补项和数学归纳法)

f[0] + f[1] + ... + f[n] = f[n + 2] - 1;

f[0] + f[2] + ... + f[2n] = f[2n + 1] - 1;

f[1] + f[3] + ... + f[2n - 1] = f[2n];

f[0] ^ 2 + f[1] ^ 2 + ... f[n] ^ 2 = f[n] * f[n + 1];

f[n] ^ 2 = (-1) ^ (n + 1) + f[n - 1] * f[n + 1];

f[2n] = f[n] * (f[n + 1] + f[n - 1]);

4: f[n] % x = 0 则 f[n * k] % x = 0; k 为整数;

5: lim n -> oo f[n + 1] / f[n] = 0.618.... , 证明方法为递推式两边取比值,然后求极限

6: 斐波那契数列的第n+2项同时也代表了集合{1,2,...,n}中所有不包含相邻正整数子集个数, 证明:考虑第n个数,有f[n] = f[n - 1] + f[n - 2], 边界通过 f[1] = 2确定;

7: 与组合数的关系:F(n)=C(n-1,0)+C(n-2,1)+…+C(n-1-m,m) (m<=n-1-m), 将杨辉三角斜对角求和,组成Fibonacci数列

8: 对于质数P, f[n] % P 有循环节, 如果5是模P的二次剩余,则循环节长度是P - 1的因子, 否则是2(P + 1)的因子; 类Fibonacci也类似;

Fibonacci数列的性质,布布扣,bubuko.com

时间: 2024-12-10 20:48:22

Fibonacci数列的性质的相关文章

fibonacci数列的性质和实现方法

fibonacci数列的性质和实现方法 1.gcd(fib(n),fib(m))=fib(gcd(n,m)) 证明:可以通过反证法先证fibonacci数列的任意相邻两项一定互素,然后可证n>m时gcd(fib(n),fib(m))=gcd(fib(n-m),fib(m)),递归可 求gcd(fib(n),fib(m))=gcd(fib(k),fib(l)),最后k=l,不然继续递归.K是通过展转相减法求出,易证k=gcd(n,m),所以gcd(fib(n),fib(m)) =fib(gcd(n

算法竞赛中常见的数学(一):Fibonacci数列

最近做的题目有很多都是与Fabonacci数列有关的,身为信息组蒟蒻的我最近经常与数学组李中一大神(Orz)畅谈,其中包括Fabonacci数列的若干性质,此处做一个总结. 参考资料: <组合数学(第5版)>.<具体数学(第2版)> 正文: Fibonacci数列是形如0.1.1.2.3.5.8.13.21.34……的数列.递归形式定义为: 数列F[n]=F[n-1]+F[n-2],其中F[0]=0,F[1]=1. 当然也有这样的类Fibonacci数列,即形如: G[n]=G[n

Fibonacci数列性质的组合证明

数列 1, 1, 2, 3, 5, 8, 13, 21, 34, … 叫做 Fibonacci 数列.这个数列有很多神奇的性质,其中一个性质是,每一个 Fibonacci 数的平方与它前后两个 Fibonacci 数的乘积相比一定正好相差 1 .具体地说,如果把第 n 个 Fibonacci 数记做 Fn ,那么有: Fn+1 · Fn+1 - Fn · Fn+2 = (-1)n Fibonacci 数有很多组合数学上的意义.比如说,用 1 × 1 和 1 × 2 的积木覆盖一个 1 × n 的

求Fibonacci数列的第n项

题目: 定义Fibonacci数列如下: 方法一: 递归的方法,代码如下: #include<iostream> using namespace std; int Fibona(int n) { int m; if (n == 0) return 0; else if (n == 1 || n == 2) return 1; else { m = Fibona(n - 1) + Fibona(n - 2); return m; } } int main() { cout << &q

【编程题目】题目:定义 Fibonacci 数列 输入 n,用最快的方法求该数列的第 n 项。

第 19 题(数组.递归):题目:定义 Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1/ f(n-1)+f(n-2) n=2输入 n,用最快的方法求该数列的第 n 项. 思路:递归和非递归的 下面的代码有个问题,没有考虑大数越界.返回值应该设成long long型的 递归速度非常慢 /* 第 19 题(数组.递归): 题目:定义 Fibonacci 数列如下: / 0 n=0 f(n)= 1 n=1 / f(n-1)+f(n-2) n=2 输入 n,用最快的方法求该数列的第

Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列

什么是递归?简单的说就是:函数自身调用自身. "普通程序员用迭代,天才程序员用递归" 虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢, 但在一些算法上面仍然是递归很实用 但需要注意的是: #递归是自己调用自己 很消耗时间,还会有消耗空间的危险,所以递归递归一定要知道"归去来兮" #所谓"归去来兮"就是指递归的两个原则: #1.调用了函数自身 #2.设置了自身正确的返回值 (必须有一个正确的返回停止条件,不能无

蓝桥杯算法训练 java算法 Fibonacci数列

问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n. 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数. 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单. 样例输入 10 样例输出 55 样例输

Fibonacci数列(codevs 1250)

题目描述 Description 定义:f0=f1=1, fn=fn-1+fn-2(n>=2).{fi}称为Fibonacci数列. 输入n,求fn mod q.其中1<=q<=30000. 输入描述 Input Description 第一行一个数T(1<=T<=10000). 以下T行,每行两个数,n,q(n<=109, 1<=q<=30000) 输出描述 Output Description 文件包含T行,每行对应一个答案. 样例输入 Sample I

Fibonacci数列--矩阵乘法优化

Fibonacci数列 题目描述 定义:f0=f1=1, fn=fn-1+fn-2(n>=2).{fi}称为Fibonacci数列. 输入n,求fn mod q.其中1<=q<=30000. 输入描述 第一行一个数T(1<=T<=10000). 以下T行,每行两个数,n,q(n<=109, 1<=q<=30000) 输出描述 文件包含T行,每行对应一个答案. 样例输入 3 6 2 7 3 7 11 样例输出 1 0 10 数据范围及提示 1<=T<