斐波那契数列の循环节

这问题咕咕咕了好久,来填坑了。

问题

求斐波那契数列在模 p 意义下的循环节 m

解法

首先知道 fib 通项公式为 f(n)=AnBn5 ,其中 A=1+52,B=152

这里有个 5 ,故要从二次剩余角度去分析。

对于 p=2p=5

直接手玩,可得 p=2 时,m=3p=5 时,m=20

对于非 5 的奇质数

1. 若 5 是模 p 意义下的二次剩余

由费马小定理知 Ap11(mod p),Bp11(mod p)

f(p1)Ap1Bp150(mod p)

f(p)ApBp51(mod p)

可发现 (f(0),f(1))(f(p1),f(p)) 相等,故 m|p1

2. 若 5 是模 p 意义下的二次非剩余

由欧拉判别准则知 5p121(mod p)

Ap=(1+52)p=(12)p(1+5)p12(1+5p)12(15)B(mod p)

同理可得

BpA(mod p)

f(2p+1)=A2p+1B2p+15B2AAB25AB1(mod p)

f(2p+2)=A2p+2B2p+250(mod p)

f(2p+3)=f(2p+1)+f(2p+2)1(mod p)

可发现 (f(0),f(1))(f(2p+2),f(2p+3)) 相等,故 m|2p+2

对于质数的幂 pk

  • 结论1

a1(mod p) ,则 apk1(mod pk+1)

证明可用二项式定理,具体地,令 a=px+1 ,则

apk=i=0pk(pki)(px)i1(mod p)

设在模 p 意义下循环节长度为 m ,在模 pk 意义下循环节长度为 m ,则有

f(m)=AmBm50(mod p)

AmBm(mod p)

f(m+1)=Am+1Bm+15f(1)AB5(mod p)

Am+1Bm+1A+B0(mod p) ,化简一下,得 (AB)(Am1)0(mod p)

所以有

AmBm1(mod p)

(Am)pk1(Bm)pk11(mod pk)

很显然了,循环节 m|mpk1

可断言 m=mpk1 (无一反例),但数学界目前暂未证明出来。

对于合数 p=p1a1p2a2...pkak

我们记 g(p) 表示模 p 意义下的循环节长度,则满足

{f(g(p))0(mod p1a1)f(g(p)+1)0(mod p1a1)f(g(p))0(mod p2a2)f(g(p)+1)0(mod p2a2)...

显然 g(p)=lcmi=1kg(piai)

只需要做一次 CRT 即可得到答案。

上界估计

先剔除 pi=2pi=3pi=5 ,则有

g(p)=lcmi=1kg(piai)lcmi=1k(piai1g(pi))4pi=1kpi12pi

如果加入 pi=2 ,则乘上 3×2ai1 ;对于 pi=3,5 同理。

g(p)6×p

posted @   wlzhouzhuan  阅读(2149)  评论(3编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示