先通过模除确定末9位的想法和精品贴里是一样的,但是对于前9位我有个方法,比高精度计算复杂度低。
首先推出F(n)的通项公式:(((1+sqrt(5))/2)^n - ((1-sqrt(5))/2)^n) / sqrt(5),推的过程用特征方程也行,凑等比配方也行。。
由于|(1-sqrt(5))/2|小于1,所以在求前9位的时候可以忽略,这样
F(n) ≈ ((1+sqrt(5))/2)^n / sqrt(5)
lg F(n) ≈ nlg (1+sqrt(5))/2 - sqrt(5)
F(n)作为一个整数,可以写成科学计数法a*10^b,这里1<=a<10。
算出lg F(n),整数部分就是b,小数部分就是lg a。
我们取小数部分设为c,所以a = 10^c,所以求 10^c * 10^8,取整,就是前9位了。
首先推出F(n)的通项公式:(((1+sqrt(5))/2)^n - ((1-sqrt(5))/2)^n) / sqrt(5),推的过程用特征方程也行,凑等比配方也行。。
由于|(1-sqrt(5))/2|小于1,所以在求前9位的时候可以忽略,这样
F(n) ≈ ((1+sqrt(5))/2)^n / sqrt(5)
lg F(n) ≈ nlg (1+sqrt(5))/2 - sqrt(5)
F(n)作为一个整数,可以写成科学计数法a*10^b,这里1<=a<10。
算出lg F(n),整数部分就是b,小数部分就是lg a。
我们取小数部分设为c,所以a = 10^c,所以求 10^c * 10^8,取整,就是前9位了。