zoukankan      html  css  js  c++  java
  • 斐波那契数列の循环节

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

    问题

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

    解法

    首先知道 (fib) 通项公式为 (f(n)=frac{A^n-B^n}{sqrt{5}}) ,其中 (A=frac{1+sqrt{5}}{2},B=frac{1-sqrt{5}}{2})

    这里有个 (sqrt{5}) ,故要从二次剩余角度去分析。

    对于 (p=2)(p=5)

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

    对于非 5 的奇质数

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

    由费马小定理知 (A^{p-1}≡1(mod p),B^{p-1}≡1(mod p))

    [f(p-1)≡frac{A^{p-1}-B^{p-1}}{sqrt{5}}≡0(mod p) ]

    [f(p)≡frac{A^{p}-B^{p}}{sqrt{5}}≡1(mod p) ]

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

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

    由欧拉判别准则知 (5^{frac{p-1}{2}}≡-1(mod p))

    [A^p=(frac{1+sqrt{5}}{2})^p=(frac{1}{2})^p(1+sqrt{5})^p≡frac{1}{2}(1+sqrt{5}^p)≡frac{1}{2}(1-sqrt{5})≡B(mod p) ]

    同理可得

    [B^p≡A(mod p) ]

    [f(2p+1)=frac{A^{2p+1}-B^{2p+1}}{sqrt{5}}≡frac{B^2A-AB^2}{sqrt{5}}≡AB≡1(mod p) ]

    [f(2p+2)=frac{A^{2p+2}-B^{2p+2}}{sqrt{5}}≡0(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)

    对于质数的幂 (p^k)

    • 结论1

    (a≡1(mod p)) ,则 (a^{p^k}≡1(mod p^{k+1}))

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

    [a^{p^k}=sumlimits_{i=0}^{p^k}inom{p^k}{i}(px)^i≡1(mod p) ]

    设在模 (p) 意义下循环节长度为 (m) ,在模 (p^k) 意义下循环节长度为 (m') ,则有

    [f(m)=frac{A^m-B^m}{sqrt{5}}≡0 (mod p) ]

    (A^m≡B^m(mod p))

    [f(m+1)=frac{A^{m+1}-B^{m+1}}{sqrt{5}}≡f(1)≡frac{A-B}{sqrt{5}}(mod p) ]

    (A^{m+1}-B^{m+1}-A+B≡0(mod p)) ,化简一下,得 ((A-B)(A^m-1)≡0(mod p))

    所以有

    [A^m≡B^m≡1(mod p) ]

    [(A^m)^{p^{k-1}}≡(B^m)^{p^{k-1}}≡1(mod p^k) ]

    很显然了,循环节 (m'|mp^{k-1})

    可断言 (m'=mp^{k-1}) (无一反例),但数学界目前暂未证明出来。

    对于合数 (p=p_1^{a_1}p_2^{a_2}...p_k^{a_k})

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

    [egin{cases}f(g(p))≡0(mod p_1^{a_1})\ f(g(p)+1)≡0(mod p_1^{a_1})\f(g(p))≡0(mod p_2^{a_2})\f(g(p)+1)≡0(mod p_2^{a_2})\...end{cases}]

    显然 (g(p)=lcm_{i=1}^{k}g(p_i^{a_i}))

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

    上界估计

    先剔除 (p_i=2)(p_i=3)(p_i=5) ,则有

    [g(p)=lcm_{i=1}^{k}g(p_i^{a_i})le lcm_{i=1}^{k}left(p_i^{a_i-1}g(p_i) ight)le 4pprodlimits_{i=1}^{k}frac{p_i-1}{2p_i} ]

    如果加入 (p_i=2) ,则乘上 (3 imes 2^{a_i-1}) ;对于 (p_i=3,5) 同理。

    (g(p)le 6 imes p)

  • 相关阅读:
    linux 学习随笔-shell基础知识
    linux 学习随笔-压缩和解压缩
    解析xml的4种方法详解
    集合工具类
    Map概述
    List集合概述
    Java集合框架
    Spring JdbcTemplate详解
    关于c3p0数据库连接池的简单使用
    Java通过JDBC封装通用DAO层
  • 原文地址:https://www.cnblogs.com/wlzhouzhuan/p/13901190.html
Copyright © 2011-2022 走看看