ベネットのアルゴリズムを使用してフィボナッチ数を計算しようとしている以前の質問を続けようとしています。任意の精度で作業するには、mpmath. ただし、実装は特定の値を超えると失敗するようです。たとえば、99 番目の値は次のようになります。
218922995834555891712
これは ( ref )である必要があります。
218922995834555169026
これが私のコードです:
mpmath インポートから *
デフォルトファイ():
リターン (1 + sqrt(5)) / 2
デフファイ():
リターン (1 - sqrt(5)) / 2
デフォルト F(n):
return (power(Phi(), n) - power(phi(), n)) / sqrt(5)
開始 = 99
終了 = 100
範囲内の x の場合 (開始、終了):
print(x, int(F(x)))