📜  备用斐波那契数(1)

📅  最后修改于: 2023-12-03 15:37:50.565000             🧑  作者: Mango

备用斐波那契数

备用斐波那契数(Alternative Fibonacci Number,AFN)又称为扩展斐波那契数(Extended Fibonacci Number,EFN),是一种扩展了斐波那契数列的数列。

定义

备用斐波那契数列定义如下:

  • $AFN_0 = 0$
  • $AFN_1 = 1$
  • $AFN_n = AFN_{n-1} + AFN_{n-2}$
  • $AFN_{n+m} = AFN_n \cdot AFN_{m+1} + AFN_{n+1} \cdot AFN_m$

其中,$n$和$m$为非负整数。

性质
奇偶性
  • $AFN_{2n} = AFN_n \cdot (AFN_{n-1} + AFN_{n+1})$
  • $AFN_{2n+1} = AFN_n^2 + AFN_{n+1}^2$
整除性
  • 若$p$是素数,则$AFN_p$模$p$的余数为$AFN_{p \bmod 6}$模$p$的余数。
实现

下面是用Python实现备用斐波那契数列的代码片段:

def AFN(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        a, b = 0, 1
        for i in range(2, n+1):
            c = a*b + b*(a+b)
            a, b = b, c
        return b

该函数返回第$n$个备用斐波那契数。时间复杂度为$O(n)$。

应用

备用斐波那契数在密码学和计算几何中有一些应用。例如,可以用它来生成密码和密钥,或者计算凸包的面积和周长。