斐波那契数性质 gcd(F[n],F[m])=F[gcd(n,m)]
引理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)]的更多相关文章
- 算法笔记_001:斐波那契数的多种解法(Java)
本篇文章解决的问题来源于算法设计与分析课程的课堂作业,主要是运用多种方法来计算斐波那契数.具体问题及解法如下: 一.问题1: 问题描述:利用迭代算法寻找不超过编程环境能够支持的最大整数的斐波那契数是第 ...
- CodeForces - 450B Jzzhu and Sequences —— 斐波那契数、矩阵快速幂
题目链接:https://vjudge.net/problem/CodeForces-450B B. Jzzhu and Sequences time limit per test 1 second ...
- 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]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵 ...
- 斐波那契数[XDU1049]
Problem 1049 - 斐波那契数 Time Limit: 1000MS Memory Limit: 65536KB Difficulty: Total Submit: 1673 Ac ...
- 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 …… ...
- Project Euler 104:Pandigital Fibonacci ends 两端为全数字的斐波那契数
Pandigital Fibonacci ends The Fibonacci sequence is defined by the recurrence relation: F[n] = F[n-1 ...
- DP:斐波纳契数
题目:输出第 n 个斐波纳契数(Fibonacci) 方法一.简单递归 这个就不说了,小n怡情,大n伤身啊……当n=40的时候,就明显感觉到卡了,不是一般的慢. //输出第n个 Fibonacci 数 ...
- HDU4549 M斐波那契数
M斐波那契数列 题目分析: M斐波那契数列F[n]是一种整数数列,它的定义例如以下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 如今给 ...
- [Swift]LeetCode509. 斐波那契数 | Fibonacci Number
The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...
随机推荐
- Leetcode 219. 存在重复元素 II
说明: 首先,这是一道Easy题,我天!但是题意理解还是很多坑~ 题目描述: 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j] ...
- OpenSSL创建证书
使用OpenSSL创建证书.采用的OS为CentOS7. 1. 修改OpenSSL的配置文件 vim /etc/pki/tls/openssl.cnf [ CA_default ] dir = /et ...
- Kubernetes之Taints与Tolerations 污点和容忍
NodeAffinity节点亲和性,是Pod上定义的一种属性,使Pod能够按我们的要求调度到某个Node上,而Taints则恰恰相反,它可以让Node拒绝运行Pod,甚至驱逐Pod. Taints(污 ...
- Zuul之路由熔断
Zuul作为Netflix组件,可以与Ribbon.Eureka.Hystrix等组件结合,实现负载均衡.熔断器的功能 Spring boot2X集成zuul与consul实现负载均衡和反向代理 当后 ...
- 用简单的JS代码制作计算器
代码+注释一共不到200行,是练习交流的必备良药 主界面如下: 操作示意图: 以下是代码部分 HTML: <div> <table class="window"& ...
- Oracle 'no privileges on tablespace 表空间名称' 问题解决
create user bryan identified by bryan; grant create session to bryan; grant create table to brya ...
- ReentrantReadWriteLock源码
@SuppressWarnings("restriction") public class ReentrantReadWriteLock1 implements ReadWrite ...
- Linux命令中service的用法
用途说明 service命令用于对系统服务进行管理,比如启动(start).停止(stop).重启(restart).查看状态(status)等.相关的命令还包括chkconfig.ntsysv等,c ...
- python的JSON库
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. 1.json库的使用 使用 JSON 函数需要导入 json 库:import jso ...
- Sitecore 9 您应该了解的所有新功能和变化
信不信由你,当我谈论Sitecore时,我感到非常兴奋.这是一个充满潜力和机遇的伟大平台 如果你能想象一个刚刚进行过一次双重训练的人,一个特大号的星巴克,并且刚刚在创纪录的时间内完成了中国忍者勇士的障 ...