斐波那契数列指这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...,即后一项等于之前两项之和,第0项是0,第1项是第一个1。该数列有许多众所周知的奇妙的性质,但今天,我们来探讨一个鲜未发现的新规律,用下边的py脚本可以打印出1000项的斐波那契大数。
# 斐波那契数项数与位数打印
print("斐波那契数Fn 项数n 位数")
F1=0;F2=1;n=1
while n<1000:
Fn=F1+F2;F1=F2;F2=Fn;n+=1
print(Fn,"(",n,",",len(str(Fn)),")")
仔细观察数字的末尾,你会发现一个惊人的秘密,数字末端堆积的形状像一条斜线。数字末端的位置不就是数字的长度吗,行号不就是项数吗,形状像条斜线,又遇线性关系?
非也,只是近似线性关系,如果设第一个L位的斐波那契数的项数是N,那么L与N之间存在如下美妙关系
# 斐波那契-无忧公主项数定律
N=ceil((L-1+0.5*math.log10(5))/math.log10((1+5**0.5)/2))
# 斐波那契位数估值
L=ceil((N*math.log10((1+5**0.5)/2))-math.log10(5**0.5))
看似简单的表达式,却不好去证明,数学也难得糊涂!