引理1

结论:
\[F(n)=F(m)F(n-m+1)+F(m-1)F(n-m)\]

推导:
\[
\begin{aligned}
F(n) &= F(n-1)+F(n-2) \\
&= 2F(n-2)+F(n-3) \\
&= 3F(n-3)+2F(n-4) \\
&= 5F(n-4)+3F(n-5) \\
&= \cdots \\
&= F(m)F(n-m+1)+F(m-1)F(n-m)
\end{aligned}
\]

看出系数的规律了,2=1+1,3=2+1,5=3+2,……

用数学归纳法严谨证明一下:

1)当\(m=2\)时,\(F(n)=F(2)F(n-2+1)+F(2-1)F(n-2)=F(n-1)+F(n-2)\)成立。

2)设当\(m=k \quad (2 \leq k \leq n-2)\)时,\(F(n)=F(k)F(n-k+1)+F(k-1)F(n-k)\)成立。

又\(\because F(k-1)=F(k+1)-F(k)\)
\(\therefore F(n)=F(k)F(n-k+1)+\left[F(k+1)-F(k)\right]F(n-k)\)
即\(F(n)=F(k+1)F(n-k)+F(k)\left[F(n-k+1)-F(n-k)\right]\)
又\(\because F(n-k+1)-F(n-k)=F(n-k-1)\)
\(\therefore F(n)=F(k+1)F(n-k)+F(k)F(n-k-1)\),说明当\(m=k+1\)时等式也成立。

综上,\(F(n)=F(m)F(n-m+1)+F(m-1)F(n-m)\)对于\([2,n-1]\)内的任意一个整数\(m\)都成立。

引理2

\[\gcd(F(n),F(n-1))=1\]

根据gcd更相减损性质:\(\gcd(a,b)=\gcd(b,a-b) \quad (a>b)\)
得\(\gcd(F(n),F(n-1))=\gcd(F(n-1),F(n)-F(n-1))=\gcd(F(n-1),F(n-2))\)

不断套用上式得到\(\gcd(F(n),F(n-1))=\gcd(F(2),F(1))=1\)

证明\(\gcd(F(n),F(m))=F(gcd(n,m))\)

由引理1可知
\(\gcd(F(n),F(m)) = \gcd(F(m)F(n-m+1)+F(m-1)F(n-m),F(m)) \quad (n>m)\)

而\(F(m)F(n-m+1)\)为\(F(m)\)的倍数,故
\(\gcd(F(n),F(m)) = \gcd(F(m-1)F(n-m),F(m))\) (gcd的更相减损,可以消掉\(F(m)\)的倍数)

因为\(F(m),F(m-1)\)互质,于是\(\gcd(F(n),F(m)) = \gcd(F(n-m),F(m))\)

递归上式,

\(\gcd(F(n),F(m)) = \gcd(F(n-m),F(m)) = \gcd(F(n-m-m),F(m)) = \cdots\)
\(\gcd(F(n),F(m)) = \gcd(F(n \mod m),F(m))\)

再递归上式,我们需要比较\(n \mod m\)与\(m\)谁更大,用大的数mod小的数。这不就是辗转相除法求最大公约数吗?

于是\(\gcd(F(n),F(m)) = \gcd(F(\gcd(n,m)),F(\gcd(n,m))) = F(\gcd(n,m))\)

证毕。

斐波那契数性质 gcd(F[n],F[m])=F[gcd(n,m)]的更多相关文章

  1. 算法笔记_001:斐波那契数的多种解法(Java)

    本篇文章解决的问题来源于算法设计与分析课程的课堂作业,主要是运用多种方法来计算斐波那契数.具体问题及解法如下: 一.问题1: 问题描述:利用迭代算法寻找不超过编程环境能够支持的最大整数的斐波那契数是第 ...

  2. CodeForces - 450B Jzzhu and Sequences —— 斐波那契数、矩阵快速幂

    题目链接:https://vjudge.net/problem/CodeForces-450B B. Jzzhu and Sequences time limit per test 1 second ...

  3. UVA 11582 Colossal Fibonacci Numbers! 大斐波那契数

    大致题意:输入两个非负整数a,b和正整数n.计算f(a^b)%n.其中f[0]=f[1]=1, f[i+2]=f[i+1]+f[i]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵 ...

  4. 斐波那契数[XDU1049]

    Problem 1049 - 斐波那契数 Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty: Total Submit: 1673  Ac ...

  5. C++求斐波那契数

    题目内容:斐波那契数定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>1且n为整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 …… ...

  6. Project Euler 104:Pandigital Fibonacci ends 两端为全数字的斐波那契数

    Pandigital Fibonacci ends The Fibonacci sequence is defined by the recurrence relation: F[n] = F[n-1 ...

  7. DP:斐波纳契数

    题目:输出第 n 个斐波纳契数(Fibonacci) 方法一.简单递归 这个就不说了,小n怡情,大n伤身啊……当n=40的时候,就明显感觉到卡了,不是一般的慢. //输出第n个 Fibonacci 数 ...

  8. HDU4549 M斐波那契数

    M斐波那契数列 题目分析: M斐波那契数列F[n]是一种整数数列,它的定义例如以下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 如今给 ...

  9. [Swift]LeetCode509. 斐波那契数 | Fibonacci Number

    The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...

随机推荐

  1. 微信公众平台开发(150)——从新浪云SAE上传图片到图文消息

    从新浪云SAE上传图片到图文消息,只能用于图文消息中, 没有个数限制 if (!empty($_FILES['qrcode']['name'])){ $filename = time()." ...

  2. WebBrowser内存泄露

    使用WebBrowser控件开发的程序,占用内存会随着时间不停增长,最终内存溢出导致崩溃.究其原因是由于其自身的缺陷造成的.每一次加载新页面,WebBrowser就会多占用10-20M内存,有资料说是 ...

  3. hadoop学习之HDFS原理

    HDFS原理 HDFS包括三个组件: NameNode.DataNode.SecondaryNameNode NameNode的作用是存储元数据(文件名.创建时间.大小.权限.与block块映射关系等 ...

  4. python 列出当前目录下的所有文件和目录名

    >>> import os # 导入os模块,模块的概念后面讲到 >>> [d for d in os.listdir('.')] # os.listdir可以列出 ...

  5. Vim 入门教程

    Vim 入门教程 转载请保留以上信息 Vim 的教程相对比较零散,系统的教程比较少,我也阅读过不少教程,走过很 多弯路.借着 Vim-china 组织组建这一契机,整理下自己学习过的内容, 分享给大家 ...

  6. 深入理解AQS

    前记 在看JUC中并发相关的源码时经常看到AQS的身影,这到底是个什么鬼?必须要一探究竟. 一. AQS背景了解 JUC包中的锁,包括: Lock接口,ReadWriteLock接口,LockSupp ...

  7. HDU校赛 | 2019 Multi-University Training Contest 5

    2019 Multi-University Training Contest 5 http://acm.hdu.edu.cn/contests/contest_show.php?cid=852 100 ...

  8. HDU校赛 | 2019 Multi-University Training Contest 2

    2019 Multi-University Training Contest 2 http://acm.hdu.edu.cn/contests/contest_show.php?cid=849 100 ...

  9. Tomcat 类加载器的实现

    Tomcat 内部定义了多个 ClassLoader,以便应用和容器访问不同存储库中的类和资源,同时达到应用间类隔离的目的.本文首发于公众号:顿悟源码. 1. Java 类加载机制 类加载就是把编译生 ...

  10. Java静态变量初始化的坑

    class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; pu ...