piapia123
ja

フィボナッチ数列

生成

処理はすべてブラウザ内で完結します。データは送信されません

出力

各項は前の 2 項の和です:0, 1, 1, 2, 3, 5, 8, 13… 添字は 0 から:F(0) = 0、F(1) = 1。 世間には 2 つの流儀があり、「F(1) = 1, F(2) = 1」と「F(0) = 0, F(1) = 1」では同じ「10 番目」が 1 つずれます。これは小さな話ではありません —— 添字計算に使うときは 1 つのずれがそのまま誤りになります。ここでは国際標準の 0 起点(ISO 80000-2)を採用し、各行に添字を書き出します(`F(10)`)。どちらの流儀かが一目で分かります。 なぜ BigInt が必要か。 F(79) はすでに 2⁵³ に近く、F(80) で超えます。超えると普通の数値は下の桁を黙って落とします:F(100) を普通の数値で計算すると 354224848179262000000 になり、正しい値は 354224848179261915075 です。桁数も先頭も合っていて、異常は見えません。そしてフィボナッチは、まさに「つい 100 項まで計算してみる」数列です。 「逆引き」は逆方向の問いに答えます:この数は数列に含まれるか、含まれるなら何番目か。

機能

  • 4 通りの調べ方:先頭 N 項、N 番目、a 番目から b 番目、ある数の逆引き
  • 添字は 0 起点で、各行に添字を表示(`F(10)`)するため流儀の混同が起きません
  • 最初の 2 項を変更可能(既定 0、1)。2、1 を入れるとリュカ数(2, 1, 3, 4, 7, 11…)になります
  • 全体を通して BigInt:1000 項の 209 桁も 10000 項も正確
  • フィボナッチ数でない場合、どの 2 項の間にあるかを示します
  • 逆引きは桁区切りのカンマや空白も受け付けます
  • 範囲を逆に書いても(a > b)動作します
  • 一度に最大 500 項まで。超えた分は残り件数を明示します
  • 行ごとにコピーできます

使い方

  1. 調べ方を選びます:先頭 N 項、N 番目、範囲、逆引き
  2. 対応する数値を入力します
  3. 結果は即座に表示されます。行のコピーボタンで 1 項だけ取り出せます

よくある質問

F(1) は 1 ですか、0 ですか?
どの流儀によるか次第です。このツールは F(0) = 0、F(1) = 1 を使います(ISO 80000-2 の書き方で、多くのプログラミング解説と同じです)。もう 1 つの一般的な流儀は F(1) = F(2) = 1 で、1 から番号を振ります。数列そのものは同一で、番号が 1 つずれるだけです。そのため各行のラベルに添字を書いています(`F(10)`)—— 得られた 55 が 10 番目なのか 11 番目なのか、すぐ分かります。
普通の数値だと間違うのはなぜですか?
JavaScript の通常の数値は倍精度浮動小数点数で、有効桁数が 53 ビットしかないためです。F(80) = 23416728348467685 はすでにその範囲を超えており、普通の数値にすると 23416728348467684 になります。厄介なのは、エラーも例外も出ず、黙って 1 だけ小さくなることです。このツールは全体で BigInt を使うため、何桁でも正確です。
何項まで計算できますか?
添字の上限は 10000 です(F(10000) は 2090 桁で、画面には収まりません)。上限は出力の都合です —— それ以上並べると結果欄もコピー内容も使えない大きさになります。逆引きも同じ上限の中で探し、それを超える数は「数列にない」と明示します。探し切ったふりはしません。

関連ツール