距离上一篇指数循环节貌似过了好几天了,今天就来写一下如何求解Fibonacci数列循环节,这个循环节当然是指模一个数的条件下,然后我会介绍如何求广义Fibonacci数列的循环节。
我们先来看第一部分。
Fibonacci数列循环节
首先,我们知道Fibonacci数列的递推公式是: F n+1 =F n +F n−1 for n>1
我们也知道Fibonacci数列的通项公式是: F n =15 √ (ϕ n −ϕ ¯ ¯ ¯ n ) ,其中 ϕ=1+5 √ 2 ,ϕ ¯ ¯ ¯ =1−5 √ 2
下面我们给出循环节的定义
Fibonacci数列模一个数 j 的循环节 m 是一个最小的整数满足: F m ≡0modj,F m+1 ≡1modj 。并且如果 k 是Fibonacci数列的一个循环节,那么 k 必是 m 的倍数。
接下来写几个下面需要用到的定理。
定理1
设 p 是一个质数, n,a 是一个正整数,如果 a≡1modp ,那么 a p n ≡1modp n+1
这个定理可以用数学归纳法证明,这里就不再多说。
引理1
设 p 是一个质数, k 是一个正整数,如果 m 是 F n modp 的循环节,那么 ϕ mp k−1 ≡ϕ ¯ ¯ ¯ mp k−1 ≡1modp k
证明:由于 F m =ϕ m −ϕ ¯ ¯ ¯ m 5 √ ≡0modp ,那么 ϕ m ≡ϕ ¯ ¯ ¯ m modp 。
F m =F m+1 −F 1 =ϕ m+1 −ϕ ¯ ¯ ¯ m+1 5 √ −ϕ−ϕ ¯ ¯ ¯ 5 √ =ϕ(ϕ m −1)−ϕ ¯ ¯ ¯ (ϕ ¯ ¯ ¯ m −1)5 √
然后由于 ϕ m ≡ϕ ¯ ¯ ¯ m modp ,我们得到
于是我们得到 ϕ ¯ ¯ ¯ m ≡ϕ m ≡1modp
利用定理1 ,我们就能得到 ϕ mp k−1 ≡ϕ ¯ ¯ ¯ mp k−1 ≡1modp k 。
定理2
设 j 是一个正整数,并且 j=∏ s i=1 p k i i , p i is a prime ,设 m i 是 F n modp k i i 的循环节。如果 m 是 F n modj 的循环节,那么 m=lcm(m 1 ,m 2 ,…,m s ) 。
这个定理太显然了,就不证明了。
定理3
设 p 是一个不等于5的质数,那么5是 p 的平方剩余当且仅当 p≡±1mod5 ,5是 p 的非平方剩余当且仅当 p≡±2mod5 。
这个定理用二次互反律很容易证明。
有了上面定理我们知道当 p≡±1mod5 时, ϕ,ϕ ¯ ¯ ¯ 是有限域 F p 的元素;当 p≡±2mod5 时, ϕ,ϕ ¯ ¯ ¯ 不是有限域 F p 的元素。出现第二个case的时候,我们不好办,需要把 F p 扩展使其包含 ϕ,ϕ ¯ ¯ ¯ ,这个都是后话,现在先略过。
定理4
设 p 是一个质数, m 是 F n modp 的周期。如果 p≡±1mod5 ,那么 m|p−1 。
证明:因为 p≡±1mod5 ,那么 ϕ,ϕ ¯ ¯ ¯ 是有限域 F p 的元素。于是利用费马小定理,我们可以得到
然后就有 F p−1 ≡15 √ (ϕ p−1 −ϕ ¯ ¯ ¯ p−1 )≡15 √ (1−1)≡0modp
并且
于是 p 是其中一个循环节,那么 m|p−1 。
定理5
设 p 是一个质数, m 是 F n modp 的周期。如果 p≡±2mod5 ,那么 m|2p+2 ,并且 2p+2m 是奇数。
我们知道 ϕ,ϕ ¯ ¯ ¯ 不是有限域 F p 的元素。于是我们考虑下面这个有限域
于是
同理可以得到 ϕ ¯ ¯ ¯ p =ϕ
于是我们就可以得到下面的式子
并且有 F p+2 ≡F p +F p+1 ≡(p−1)modp ,于是我们知道 m∤p+1 。
然后在观察下面的式子
于是 F 2p+3 ≡F 2p+1 +F 2p+2 ≡1modp
于是 2p+2 是一个循环节,因此 m∣2p+2 ,由于 m∤p+1 , 2p+2m 是奇数。
好了现在,我们已经知道如何求Fibonacci模一个指数的循环节,现在我们考虑质数的幂次。
定理6
设 p 是一个质数,设 m 是 F n modp 的最小循环节,如果 m ′ 是 F n modp k 的最小循环节,那么 m ′ ∣mp k−1 。
证明:由引理1我们可以知道
于是
并且
显然我们可以得到 m ′ ∣mp k−1 。
补充1:对于我们目前知道的所有素数,都有 m ′ =mp k−1 ,因此我们在实际做题目的时候可以直接当做等于来用。
补充2: m ′ =mp k−1 成立的确切条件是 F n modp 的循环节和 F n modp 2 的循环节不同。
关于Fibonacci部分已经搞定了,我们来总结一下,定义 P(m) 为模 m 的循环节。
- P(m)=lcm(P(p k 1 1 ),P(p k 2 2 ),…,P(p k s s ))
- P(p k )=P(p)p k−1 , if P(p 2 )≠P(p)
- P(p)∣p−1,p≡±1modp
- P(p)∣2p+2,p≡±2modp
下面开始第二部分,广义Fibonacci数列的循环节。
广义Fibonacci数列的循环节
这个等有空再写
现在先填上一篇链接http://blog.csdn.net/acdreamers/article/details/25616461
这里的结论基本上和Fibonacci数列的结论没有什么区别,证明我就不写了,不理解的地方可以参考上面贴出的链接。
今天来补上这个部分,然后给一些规范的定义。
首先定义一下广义Fibonacci数列: G n+1 =AG n +BG n−1
然后设 p 是一个素数, K A,B (p) 表示 G n modp 的周期。
好了,我们开始求广义Fibonacci数列的循环节,由上面的递推是我们可以得到这个数列的递推矩阵
并且可以知道这个矩阵的特征根 λ 1 ,λ 2 ,是方程 x 2 −Ax−B=0 的两根。
根据平方剩余的知识,我们知道 λ 1 ,λ 2 可以在域 Z/pZ 中表示,当且仅当 Δ=A 2 +4B 是 modp 的平方剩余。
类似定理4,我们可以得到以下定理。
定理7
设 p 是一个质数,如果 Δ 是 modp 的平方剩余,那么 K A,B (p)∣p−1 .
然后我们也有几个引理。
引理2
设 p 是一个奇质数,如果 Δ 是 modp 的非平方剩余,那么 (Δ − − √ ) p ≡−Δ − − √ modp 。
证明:因为 Δ 是 modp 的非平方剩余,根据欧拉准则,我们有
于是
引理3
如果 λ 1 ,λ 2 ,是方程 x 2 −Ax−B=0 在域 F=F p 2 的两根,那么 λ p+1 1 =λ p+1 2 .
证明:首先我们知道 λ 1 +λ 2 =A ,于是
定理8
设 p 是一个质数,如果 Δ 是 modp 的非平方剩余,那么 K A,B (p)∣2(p−1)⋅ord p (B 2 ) .
然后有一个定理:
令 ord n (a)=t , u 是一个正整数,那么 ord n (a u )=t/(t,u) .
于是定理8可以修改为以下形式
设 p 是一个质数,如果 Δ 是 modp 的非平方剩余,那么 K A,B (p)∣p 2 −1 .
因为 ord p (B 2 )|ϕ(p) ,然后根据上面定理可知 ord p (B 2 )≤ϕ(p)/2 ,于是
然后对于其他的一些东西就和Fibonacci数列类似了,参照上面的定理即可。
貌似这篇文章涉及了一些平方剩余和原根的知识,下次就写一篇科普一下这些知识。