如果你写出一系列斐波那契数列,你会发现最后的数字每 60 个数字重复一次。
第 61 个斐波那契数是 2504730781961。第 62 个是 4052739537881。由于这些数以 1 和 1 结尾,因此第 63 个斐波那契数必须以 2 结尾,依此类推,因此模式重新开始。
循环的长度应为 60 并不明显,但很容易看出必须有一个循环。两个连续的数字只有 10*10 种可能性。由于斐波那契数是由两项递归决定的,并且由于总和的最后一位数字由最后一位数字的总和决定,因此最后一位数字的序列最终必须重复。这里的“最终”是指最多 10*10 个词之后。
用上面段落中的任何其他基数替换“10”,以表明最后数字的序列在任何基数中必须是循环的。例如,在 16 进制中,周期是 24。在十六进制表示法中,第 25 个斐波那契数是 12511,第 26 个是 1da31,所以第 27 个必须以 2 结尾,依此类推。
这是一个小的 python 代码,用于查找在任何基数 b 中工作的斐波那契数的最后一位数字的周期。
from sympy import fibonacci as f
def period(b):
for i in range(1, b*b+1):
if f(i)%b == 0 and f(i+1)%b == 1:
return(i)
这表明以 100 为基数的周期为 300。因此在以 10 为基数的情况下,最后 两位 数字每 300 个术语重复一次。
如下图所示,周期似乎随基数不规律地变化。