
斐波那契#
众所周知,斐波那契数列有一个性质:
gcd(fn,fm)=fgcd(n,m)
在证明他之前,先来看个引理:
Lemma 1
fn+m=fn×fm−1+fn+1×fm
这是归纳证的,m≤2 时,显然有:
fn+1=fn×f0+fn+1×f1
fn+2=fn×f1+fn+1×f2
假设对于 m≤k 均成立,证明 m=k+1 成立。
fn+k=fn×fk−1+fn+1×fk
fn+k−1=fn×fk−2+fn+1×fk−1
两个式子相加即得:
fn+k+1=fn×fk+fn+1×fk+1
即 m=k+1 成立。
如果把 n+m 替换成 m,这个引理也可以写作:
fm=fn×fm−n−1+fn+1×fm−n
接着是一个比较显然的引理:
Lemma 2
gcd(fn,fn+1)=1
简单推导一下:
gcd(fn,fn+1)=gcd(fn,fn+1−fn)=gcd(fn,fn−1)⋯=gcd(f1,f2)=1
回到最初的证明,类比更相减损推广到辗转相除,如果我们能够证明:
gcd(fn,fm)=gcd(fn,fm−n)
就可以证明经过辗转相除后:
gcd(fn,fm)=gcd(fgcd(n,m),f0)=fgcd(n,m)
把式子大力展开!
gcd(fn,fm)=gcd(fn,fn×fm−n−1+fn+1+fm−n)=gcd(fn,fn+1×fm−n)=gcd(fn,fm−n)
证毕。
y=1#
然后一道题——BZOJ-4833 最小公倍佩尔数。
题解1:推导得到 f 满足 fn=2fn−1+fn−2,类比斐波那契数列,这种形如 fn=xfn−1+yfn−2 的递推式都满足 gcd(fn,fm)=fgcd(n,m)。
题解2:我们知道……大力归纳……
我:?你说了个鬼?
那么我们来看一下所有满足:
{fi=[i=1]i≤1fi=xfi−1+yfi−2i>1
的数列 f,有什么特殊之处吧。
引理 1 的归纳过程,边界值中 m=1 时 f1=1,m=2 时 f1=y,而 f2=x 是无疑的,于是姑且讨论 y=1 的情况。
重写一下递推式:
fn=xfn−1+fn−2
现在归纳证明引理 1 对于 x∈N+,y=1 同样成立。
m≤2 时,显然有:
fn+1=fn×f0+fn+1×f1
fn+2=fn×f1+fn+1×f2
假设对于 m≤k 均成立,证明 m=k+1 成立。
fn+k=fn×fk−1+fn+1×fk
fn+k−1=fn×fk−2+fn+1×fk−1
向上面一样凑出 fn+k+1:
fn+k+1=xfn+k+fn+k−1=fn×(xfk−1+fk−2)+fn+1×(xfk+fk−1)=fn×fk+fn+1×fk+1
证毕。
而对于引理 2,也是稍作改动即可:
gcd(fn,fn+1)=gcd(fn,fn+1−xfn)=gcd(fn,fn−1)⋯=gcd(f1,f2)=1
既然两个引理都同样满足,不难得到相同的结论。
非常厉害#
SoyTony:那 y≠1 时是不是不成立?感觉差一个系数。
Jijidawang:那就随便加一个吧。(在引理 1 的第一项加了个系数 y。)
他说他是瞎加的,他可不是瞎加的啊!我看是有备而来!
很强的性质:
Theorem 1
fn+m=y×fn×fm−1+fn+1×fm
证明略,方法同上,增加了一个系数即可保证 m=2 的边界同样成立。
这个时候按理说就要证明引理 2 的相邻互质了,然而同样的方法由于系数变复杂变得很难看。思考另一个问题:什么情况下保证相邻互质?
Theorem 2
gcd(x,y)=1⇔gcd(fn,fn+1)=1
还是归纳一下,n=1 时显然成立。
假设对于 n≤k 均成立,证明 n=k+1 成立。
把 fk+1 拆开!
gcd(fk,fk+1)=gcd(fk,xfk+yfk−1)=gcd(fk,yfk−1)=gcd(fk,y)=gcd(fkmody,y)
显然 fk 可以表示成 fk=ax+by 的形式,即要求 gcd(ax,y)=1 成立。
于是我们得到一个必要条件:gcd(x,y)=1,似乎很有意义。
下面来证明其充分性。
再看刚刚归纳得到的式子:
gcd(fn,fn+1)=gcd(fn,yfn−1)
假设中 gcd(fn,fn−1)=1,此时满足条件 gcd(fn,y)=1 则原式成立,我们不妨对此同样进行归纳。
假设 n≤k 时,gcd(fn,fn+1)=1,gcd(fn,y)=1,现证明满足 gcd(x,y)=1 的情况下,n=k+1 时仍然成立。
gcd(fk+1,y)=gcd(xfk+yfk−1,y)=gcd(xfk,y)
而 gcd(x,y)=1,gcd(fk,y)=1 均成立,即证。
最后整理一下:
∀x,y∈N∗,递推式:
fn={[n=1]n≤1xfn−1+yfn−2n>1
满足:
fn+m=y×fn×fm−1+fn+1×fm
gcd(x,y)=1⇔gcd(fn,fm)=fgcd(n,m)
Natural Motivation#
此篇闲话拿去投日报了,对 Theorem 1 部分有一个更自然的 Motivation,如下:
引理 1 的归纳部分可效仿之处很多,事实上,对于任意的系数:
fn+m=a×fn×fm−1+b×fn+1×fm
归纳 m=k+1 成立的部分都可以写成:
fn+k+1=xfn+k+yfn+k−1=a×fn×(xfk−1+yfk−2)+b×fn+1×(xfk+yfk−1)=a×fn×fk+b×fn+1×fk+1
因此我们只需要找到使得边界成立 a,b,容易列出:
{fn+1=a×fn×f0+b×fn+1×f1fn+2=a×fn×f1+b×fn+1×f2
得:
{a=yb=1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效