Loading

【闲话】2023.1.27 斐波那契数列一个性质及推广

斐波那契

众所周知,斐波那契数列有一个性质:

\[\gcd(f_{n},f_{m})=f_{\gcd(n,m)} \]


在证明他之前,先来看个引理:

\(\mathrm{Lemma\ 1}\)

\[f_{n+m}=f_{n}\times f_{m-1}+f_{n+1}\times f_{m} \]

这是归纳证的,\(m\le 2\) 时,显然有:

\[f_{n+1}=f_{n}\times f_{0}+f_{n+1}\times f_{1} \]

\[f_{n+2}=f_{n}\times f_{1}+f_{n+1}\times f_{2} \]

假设对于 \(m\le k\) 均成立,证明 \(m=k+1\) 成立。

\[f_{n+k}=f_{n}\times f_{k-1}+f_{n+1}\times f_{k} \]

\[f_{n+k-1}=f_{n}\times f_{k-2}+f_{n+1}\times f_{k-1} \]

两个式子相加即得:

\[f_{n+k+1}=f_{n}\times f_{k}+f_{n+1}\times f_{k+1} \]

\(m=k+1\) 成立。

如果把 \(n+m\) 替换成 \(m\),这个引理也可以写作:

\[f_{m}=f_{n}\times f_{m-n-1}+f_{n+1}\times f_{m-n} \]


接着是一个比较显然的引理:

\(\mathrm{Lemma}\ 2\)

\[\gcd(f_{n},f_{n+1})=1 \]

简单推导一下:

\[\begin{aligned} \gcd(f_{n},f_{n+1})&=\gcd(f_{n},f_{n+1}-f_{n})\\ &=\gcd(f_{n},f_{n-1})\\ &\cdots\\ &=\gcd(f_{1},f_{2})\\ &=1 \end{aligned}\]


回到最初的证明,类比更相减损推广到辗转相除,如果我们能够证明:

\[\gcd(f_{n},f_{m})=\gcd(f_{n},f_{m-n}) \]

就可以证明经过辗转相除后:

\[\gcd(f_{n},f_{m})=\gcd(f_{\gcd(n,m)},f_{0})=f_{\gcd(n,m)} \]

把式子大力展开!

\[\begin{aligned} \gcd(f_{n},f_{m})&=\gcd(f_{n},f_{n}\times f_{m-n-1}+f_{n+1}+f_{m-n})\\ &=\gcd(f_{n},f_{n+1}\times f_{m-n})\\ &=\gcd(f_{n},f_{m-n}) \end{aligned}\]

证毕。

\(y=1\)

然后一道题——BZOJ-4833 最小公倍佩尔数

题解1:推导得到 \(f\) 满足 \(f_{n}=2f_{n-1}+f_{n-2}\),类比斐波那契数列,这种形如 \(f_{n}=xf_{n-1}+yf_{n-2}\) 的递推式都满足 \(\gcd(f_{n},f_{m})=f_{\gcd(n,m)}\)

题解2:我们知道……大力归纳……

我:?你说了个鬼?

那么我们来看一下所有满足:

\[\begin{cases} f_{i}=[i=1]&i\le 1\\ f_{i}=xf_{i-1}+yf_{i-2}&i>1 \end{cases}\]

的数列 \(f\),有什么特殊之处吧。


引理 \(1\) 的归纳过程,边界值中 \(m=1\)\(f_1=1\)\(m=2\)\(f_1=y\),而 \(f_2=x\) 是无疑的,于是姑且讨论 \(y=1\) 的情况。

重写一下递推式:

\[f_{n}=xf_{n-1}+f_{n-2} \]

现在归纳证明引理 \(1\) 对于 \(x\in \mathrm{N}_{+},y=1\) 同样成立。

\(m\le 2\) 时,显然有:

\[f_{n+1}=f_{n}\times f_{0}+f_{n+1}\times f_{1} \]

\[f_{n+2}=f_{n}\times f_{1}+f_{n+1}\times f_{2} \]

假设对于 \(m\le k\) 均成立,证明 \(m=k+1\) 成立。

\[f_{n+k}=f_{n}\times f_{k-1}+f_{n+1}\times f_{k} \]

\[f_{n+k-1}=f_{n}\times f_{k-2}+f_{n+1}\times f_{k-1} \]

向上面一样凑出 \(f_{n+k+1}\)

\[\begin{aligned} f_{n+k+1}&=xf_{n+k}+f_{n+k-1}\\ &=f_{n}\times (xf_{k-1}+f_{k-2})+f_{n+1}\times (xf_{k}+f_{k-1})\\ &=f_{n}\times f_{k}+f_{n+1}\times f_{k+1} \end{aligned}\]

证毕。


而对于引理 \(2\),也是稍作改动即可:

\[\begin{aligned}\ \gcd(f_{n},f_{n+1})&=\gcd(f_{n},f_{n+1}-xf_{n})\\ &=\gcd(f_{n},f_{n-1})\\ &\cdots\\ &=\gcd(f_{1},f_{2})\\ &=1 \end{aligned}\]

既然两个引理都同样满足,不难得到相同的结论。

非常厉害

SoyTony:那 \(y\neq 1\) 时是不是不成立?感觉差一个系数。

Jijidawang:那就随便加一个吧。(在引理 \(1\) 的第一项加了个系数 \(y\)。)

他说他是瞎加的,他可不是瞎加的啊!我看是有备而来!


很强的性质:

\(\mathrm{Theorem}\ 1\)

\[f_{n+m}=y\times f_{n}\times f_{m-1}+f_{n+1}\times f_{m} \]

证明略,方法同上,增加了一个系数即可保证 \(m=2\) 的边界同样成立。


这个时候按理说就要证明引理 \(2\) 的相邻互质了,然而同样的方法由于系数变复杂变得很难看。思考另一个问题:什么情况下保证相邻互质?

\(\mathrm{Theorem}\ 2\)

\[\gcd(x,y)=1\Leftrightarrow \gcd(f_{n},f_{n+1})=1 \]

还是归纳一下,\(n=1\) 时显然成立。

假设对于 \(n\le k\) 均成立,证明 \(n=k+1\) 成立。

\(f_{k+1}\) 拆开!

\[\begin{aligned} \gcd(f_{k},f_{k+1})&=\gcd(f_{k},xf_{k}+yf_{k-1})\\ &=\gcd(f_{k},yf_{k-1})\\ &=\gcd(f_{k},y)\\ &=\gcd(f_{k}\bmod y,y) \end{aligned}\]

显然 \(f_k\) 可以表示成 \(f_k=ax+by\) 的形式,即要求 \(\gcd(ax,y)=1\) 成立。

于是我们得到一个必要条件:\(\gcd(x,y)=1\),似乎很有意义。


下面来证明其充分性。

再看刚刚归纳得到的式子:

\[\gcd(f_n,f_{n+1})=\gcd(f_n,yf_{n-1}) \]

假设中 \(\gcd(f_{n},f_{n-1})=1\),此时满足条件 \(\gcd(f_{n},y)=1\) 则原式成立,我们不妨对此同样进行归纳。

假设 \(n\le k\) 时,\(\gcd(f_{n},f_{n+1})=1,\gcd(f_{n},y)=1\),现证明满足 \(\gcd(x,y)=1\) 的情况下,\(n=k+1\) 时仍然成立。

\[\begin{aligned} \gcd(f_{k+1},y) &=\gcd(xf_{k}+yf_{k-1},y)\\ &=\gcd(xf_{k},y) \end{aligned}\]

\(\gcd(x,y)=1,\gcd(f_k,y)=1\) 均成立,即证。


最后整理一下:

\(\forall x,y\in \mathbf{N^*}\),递推式:

\[f_{n}= \begin{cases} [n=1]&n\le 1\\ xf_{n-1}+yf_{n-2}&n>1 \end{cases}\]

满足:

\[f_{n+m}=y\times f_{n}\times f_{m-1}+f_{n+1}\times f_{m} \]

\[\gcd(x,y)=1\Leftrightarrow\gcd(f_{n},f_{m})=f_{\gcd(n,m)} \]

Natural Motivation

此篇闲话拿去投日报了,对 \(\mathrm{Theorem}\ 1\) 部分有一个更自然的 Motivation,如下:

引理 \(1\) 的归纳部分可效仿之处很多,事实上,对于任意的系数:

\[f_{n+m}=a\times f_{n}\times f_{m-1}+b\times f_{n+1}\times f_{m} \]

归纳 \(m=k+1\) 成立的部分都可以写成:

\[\begin{aligned} f_{n+k+1} &=xf_{n+k}+yf_{n+k-1}\\ &=a\times f_{n}\times (xf_{k-1}+yf_{k-2})+b\times f_{n+1}\times (xf_{k}+yf_{k-1})\\ &=a\times f_{n}\times f_{k}+b\times f_{n+1}\times f_{k+1} \end{aligned}\]

因此我们只需要找到使得边界成立 \(a,b\),容易列出:

\[\begin{cases} f_{n+1}=a\times f_{n}\times f_{0}+b\times f_{n+1}\times f_{1}\\ f_{n+2}=a\times f_{n}\times f_{1}+b\times f_{n+1}\times f_{2} \end{cases}\]

得:

\[\begin{cases} a=y\\ b=1 \end{cases}\]

posted @ 2023-01-27 18:41  SoyTony  阅读(269)  评论(3编辑  收藏  举报