斐波那契数性质 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 ...
随机推荐
- 【C/C++开发】C++11 并发指南三(std::mutex 详解)
本系列文章主要介绍 C++11 并发编程,计划分为 9 章介绍 C++11 的并发和多线程编程,分别如下: C++11 并发指南一(C++11 多线程初探)(本章计划 1-2 篇,已完成 1 篇) C ...
- Maven 教程(21)— maven-compiler-plugin 插件详解--
原文地址:https://blog.csdn.net/liupeifeng3514/article/details/80236077 maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样 ...
- SQL Server创建、更改和删除架构
SQL Server创建架构 学习如何使用SQL Server CREATE SCHEMA在当前数据库中创建新架构. SQL Server中的架构是什么 架构是包括表,视图,触发器,存储过程,索引等在 ...
- Android.mk文件官方使用说明
本页介绍了 ndk-build 所使用的 Android.mk 编译文件的语法. 概览 Android.mk 文件位于项目 jni/ 目录的子目录中,用于向编译系统描述源文件和共享库.它实际上是编译系 ...
- Python 文件编码问题解决
最近使用python操作文件,经常遇到编码错误的问题,例如: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbe in position ...
- dotnet core 之 CORS使用示例
这里列举几个经过验证的可用的CORS使用示例, 方便在需要的时候可以直接使用 示例1 #region snippet2 public void ConfigureServices(IServiceCo ...
- Wireshark教程之二:Wireshark捕获数据分析
使用 Wireshark 选择需要抓包的网络方式,并设置过滤器条件,当有数据通信后即可抓到对应的数据包,这里将分析其每一帧数据包的结构. 以HTTP协议为例,一帧数据包一般包括以下几个部分: Fram ...
- Vue自定义组件中Props中接收数组或对象
原文:https://www.jianshu.com/p/904551dc6c15 自定义弹框组件时,需要在弹框内展示商品list,所以需要组件中的对应字段接收一个Array数组,默认返回空数组[], ...
- pat 1039到底买不买
小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子 ...
- Vue学习之路由vue-router传参及嵌套小结(十)
一.路由传递参数: 1.使用query传值: <!DOCTYPE html> <html lang="en"> <head> <meta ...