斐波那契周期性

斐波那契周期性

定义

\[Fib_1=1,Fib_2=1,Fib_n=Fib_{n-2}+Fib_{n-1} \]

有通项公式:

\[Fib_n=\frac{1}{\sqrt 5}\left(\left(\frac{1+\sqrt 5}{2}\right)^n-\left(\frac{1-\sqrt 5}{2}\right)^n\right) \]

周期的计算

引理1

对于奇素数 \(p\equiv 1\pmod 5\)\(p\equiv 4\pmod 5\)\(p-1\) 是一个周期。

证法一

此证法来自《数论概论》。

因为 \(p\equiv 1\pmod 5\)\(p\equiv 4\pmod 5\),故 \(p\) 是个 \(\text{QR}\)

根据二次互反律,有:

\[\left(\frac{5}{p}\right)=\left(\frac{p}{5}\right)=\left(\frac{p\bmod 5}{5}\right)=\left(\frac{1}{5}\right)\text{或}\left(\frac{4}{p}\right)=1 \]

\(5\) 为模 \(p\) 的二次剩余,于是存在整数 \(c^2\equiv 5\pmod p\)。由于 \(p\nmid c\)\(p\) 是质数,\(c\) 存在逆元 \(c^{-1}\)

我们定义模 \(p\) 意义下的序列 \(J\)

\[J_n\equiv c^{-1}\Bigg(\left(\frac{1+c}{2}\right)^n-\left(\frac{1-c}{2}\right)^n\Bigg) \]

\(c^2\equiv 5\pmod p\) 可知:

\[J_1\equiv J_2\equiv 1\pmod p,J_n\equiv J_{n-2}+J_{n-1}\pmod p \]

于是 \(J\)\(Fib\) 有相同的初值和递归关系,故有:

\[J_n\equiv Fib_n\pmod p \]

我们记 \(U=\dfrac{p+1}{2},V=\dfrac{p-1}{2}\)

有:

\[Fib_n\equiv c^{-1}\left(U^n-V^n\right)\pmod p \]

由费马小定理可知:

\[\begin{aligned} Fib_{i+(p-1)j}&\equiv c^{-1}\left(U^{i+(p-1)j}-V^{i+(p-1)j}\right)\pmod p\\ &\equiv c^{-1}\left(U^i-V^i\right)\pmod p\\ &\equiv Fib_i \end{aligned}\]

即模 \(p\)\(p-1\) 循环一个,即 \(p-1\) 是周期。

证法二

该证法来自 OIwiki

\(C_n^m\) 计算式知:当 \(0<i<p\) 时,\(C_p^i\equiv 0\pmod p\)

我们直接把 \(Fib_n\) 按照定义展开:

\[\begin{aligned} Fib_p&=\frac{\sum\limits_{i=0}^{p}C_p^i\sqrt 5^i-\sum\limits_{i=0}^{p}C_p^i(-\sqrt 5)^i}{2^p\sqrt5}\\ &\equiv \frac{C_p^0\sqrt5^0+C_p^p\sqrt5^p-(C_p^0(-\sqrt5)^0+C_p^p(-\sqrt5)^p)}{2^p\sqrt5}\pmod p\\ &\equiv \frac{\sqrt5^p+\sqrt5^p}{2^p\sqrt5}\pmod p\\ &\equiv \frac{\sqrt5^{p-1}}{2^{p-1}}\pmod p \end{aligned}\]

由费马小定理,有 \(2^{p-1}\equiv 1\pmod p\)\(5\) 为模 \(p\) 意义下的二次剩余,根据欧拉准则,有 \(5^{\tfrac{p-1}{2}}\equiv 1\pmod p\),故:

\[Fib_p\equiv \sqrt5^p-1\equiv 5^{\tfrac{p-1}{2}}\equiv 1\pmod p \]

用相似的方法展开 \(Fib_{p+1}\),发现 \(Fib_{p+1}\equiv 1\pmod p\)

\(Fib_{p}\)\(Fib_{p+1}\) 两项都同余 \(1\),与 \(Fib_1\)\(Fib_2\) 一致,故 \(p-1\) 是周期。

引理2

对于奇素数 \(p\equiv 2\pmod 5\)\(p\equiv 3\pmod 5\)\(2p+2\) 是一个周期。

证明:

该证法来自 OIwiki

相似的,我们直接展开 \(Fib_{2p}\)\(Fib_{2p+1}\)

\[\begin{aligned} Fib_{2p}&=\frac{2}{2^{2p}\sqrt 5}\left(C_{2p}^1\sqrt 5+C_{2p}^3\sqrt 5^3+\dots C_{2p}^{2p-1}\sqrt 5^{2p-1}\right)\\ &\equiv \frac{1}{2^{2p-1}\sqrt 5}C_{2p}^{p}\sqrt5^p\pmod p \end{aligned}\]

可以验证,\(Fib_{2p}\) 的式子模了 \(p\) 之后只有 \(C_{2p}^{p}\) 项留了下来,又:

\[C_{2p}^p=\sum_{i=0}^{p}(C_p^i)^2 \]

故:

\[C_{2p}^p\equiv (C_p^0)^2+(C_p^p)^2\equiv 2\pmod p \]

所以根据费马小定理,有 \(2^{2p-2}\equiv 1\pmod p\);而 \(5\) 又是模 \(p\) 下的二次非剩余,根据欧拉准则,有 \(5^{\tfrac{p-1}{2}}\equiv -1\pmod p\),故:

\[Fib_{2p}\equiv \frac{\sqrt5^{p-1}}{2^{2p-2}}\equiv \sqrt5^{p-1}\equiv 5^{\tfrac{p-1}{2}}\equiv -1\pmod p \]

用相似的方法展开 \(Fib_{2p+1}\),套一些组合数的性质,发现 \(Fib_{2p+1}\equiv 1\pmod p\)

而我们根据 \(Fib_{n}=Fib_{n-2}+Fib_{n-1}\),可以倒着推出来 \(Fib_{-2}=-1,Fib_{-1}=1\)

\(Fib_{p}\)\(Fib_{p+1}\) 两项,与 \(Fib_{-2}\)\(Fib_{-1}\) 一致,故 \(2p+2\) 是周期。

引理3

来自于这篇博客

\(a\equiv 1\pmod p\),则 \(a^{p^k}\equiv1\pmod {p^{k+1}}\)

证明:

归纳证明法。假设对于 \(k-1\) 成立,即:

\[a^{p^{k-1}}\equiv 1\pmod {p^k} \]

我们设:

\[a^{p^{k-1}}=tp^k+1 \]

则:

\[a^{p^k}=(a^{p^{k-1}})^p=(tp^k+1)^p= \sum_{i=0}^{p}(tp^k)^i \]

在模 \(p^{k+1}\) 意义下,\(i\ge1\) 的项都没了,于是:

\[a^{p^k}\equiv (tp^k)^0\equiv 1\pmod {p^{k+1}} \]

证毕。

引理4

来自于这篇博客

\(p\) 为奇素数,\(p\) 的循环节为 \(t\),那么有 $ tp^{k-1}$ 是 \(p^k\) 的循环节。

证明:

我们记 \(U=\dfrac{1+\sqrt 5}{2},V=\dfrac{1-\sqrt 5}{2}\)

根据 \(t\)\(p\) 的循环节,我们有:

\[0\equiv Fib_t \equiv \frac{1}{\sqrt 5}\Big(U^t-V^t\Big) \equiv U^t-V^t\pmod p \]

故:

\[U^t\equiv V^t\pmod p \]

又:

\[\begin{aligned} 1&\equiv Fib_{t+1}\equiv \frac{1}{\sqrt 5}\Big(U^{t+1}-V^{t+1}\Big) \equiv \frac{1}{\sqrt 5}\Big(U^t\cdot U-V^t\cdot V\Big)\\ &\equiv \frac{1}{\sqrt 5}\Big(U^t\cdot U-U^t\cdot V\Big)\equiv U^t\frac{1}{\sqrt 5}(U-V)\equiv U^tFib_1 \end{aligned}\]

因为 \(Fib_1\equiv 1\pmod p\),故 \(U^t\equiv V^t\equiv 1\pmod p\)

根据引理3,有:

\[U^{tp^{k-1}}\equiv V^{tp^{k-1}}\equiv 1\pmod {p^{k}} \]

这蕴含着:

\[Fib_{tp^{k-1}}\equiv \frac{1}{\sqrt 5}(U^{tp^{k-1}}-V^{tp^{k-1}})\equiv 0\pmod {p^k} \]

\[\begin{aligned} Fib_{tp^{k-1}+1}&\equiv \frac{1}{\sqrt 5}(U^{tp^{k-1}+1}-V^{tp^{k-1}+1})\equiv \frac{1}{\sqrt 5}(U^{tp^{k-1}}\cdot U-V^{tp^{k-1}}\cdot V)\\ &\equiv \frac{1}{\sqrt 5}(U^{tp^{k-1}}\cdot U-U^{tp^{k-1}}\cdot V)\equiv U^{tp^{k-1}} \frac{1}{\sqrt5}(U-V)\\ &\equiv U^{tp^{k-1}}Fib_1\equiv 1\pmod {p^k} \end{aligned}\]

\(tp^{k-1}\) 是模 \(p^k\) 的循环节。


综合上述四个引理,我们就找到了一种计算斐波那契在模 \(m\) 意义下的循环节(注意,不是最小的)的方法:

  • \(m\) 分解质因数:\(m=\prod\limits_{i=1}^{w}p_i^{c_i}\)

  • 枚举 \(m\) 的每个质因子 \(p_i\),根据引理1和2,计算模 \(p_i\) 意义下的循环节 \(t_i\)。(特别的,若 \(p_i=2\),则循环节为 \(3\);若 \(p_i=5\),则循环节为 \(20\)

  • 根据引理4,计算出模 \(p_i^{c_i}\) 意义下的循环节 \(T_i=t_ip_i^{c_i-1}\)

  • 最后,计算模 \(m\) 意义下的循环节 \(T=\operatorname{lcm}_{i=1}^{w}T_i\) 即可。

点击查看代码
for(ll i=2;i*i<=m;i++){
	if(tmp%i==0){
		prime[++tot]=i;
		while(tmp%i==0) cnt[tot]++,m/=i;
	}
}
if(m!=1) prime[++tot]=m,cnt[tot]++;
ll zhou=1;
for(int i=1;i<=tot;i++){
	ll g;
	if(prime[i]==2) g=3;
	else if(prime[i]==5) g=20;
	else if(prime[i]%5==1||prime[i]%5==4) g=prime[i]-1;
	else if(prime[i]%5==2||prime[i]%5==3) g=2*prime[i]+2;
	g=g*spow(prime[i],cnt[i]-1);
	zhou=zhou/gcd(zhou,g)*g;
}

模板题

posted @ 2024-02-01 15:40  一匹大宝羊  阅读(217)  评论(0编辑  收藏  举报