← 数学・統計

円周率の桁生成

円周率をブラウザ内で高精度計算し、指定した小数点以下の桁数までを生成します。欲しい桁数を直接出したいときは桁数指定、同じ時間でどこまで計算を完了できるか見たいときは時間チャレンジを使います。

生成した桁列の中を探したいときは 円周率の桁ラボ を開いてください。仕組みを学ぶ流れに戻るときは 円周率近似エクスプローラー へ戻れます。

他の言語 日本語 | English | 简体中文 | 繁體中文 | 繁體中文(香港) | Español | Português (Brasil) | Français | Italiano
3 ステップ
  1. まずは小さいサンプルで、表示モード、コピー、TXT 保存の流れを確認します。
  2. 必要な長さが決まっているときは桁数指定、時間内にどこまで完成するかを見たいときは時間チャレンジを選びます。
  3. 生成後に特定の数字列を探したいときは円周率の桁ラボに進みます。

授業用の例: まず短い桁数で流れを確認し、そのあとに配布向けの桁数や短い時間チャレンジへ進みます。

モード

数えるのは小数点以下の桁数です。出力は必ず 3. から始まります。

自動では 5,000 桁までは全文、それを超えると先頭と末尾のプレビューに切り替えます。

小数点以下の桁数

生成できた桁数
経過 ms
Chudnovsky の項数
状態
表示

出力

まだ出力はありません。

このページの考え方

使っているのはチュドノフスキー(Chudnovsky)級数 1/π = 12 Σ(k=0…∞) (-1)^k (6k)! (13591409 + 545140134k) / ((3k)! (k!)^3 640320^(3k+3/2)) です。級数を再帰的に分割する binary splitting でまとめ、JavaScript の BigInt による整数演算と整数平方根で高精度に計算します。指定桁数に 18 桁の余裕を加えて計算し、最後に丸めず切り捨てて必要な先頭桁列を返します。保存済みの桁表を読み出しているわけではありません。

通常は Web Worker で同じ計算コアを動かし、Worker が使えない環境ではメインスレッドで実行します。時間チャレンジでは、制限時間内に計算が完全に終わったチェックポイントだけを採用します。

ワークシートと配布物の準備

FAQ

このプログラムはどの公式で円周率を求めていますか?

チュドノフスキー(Chudnovsky)級数を使っています。級数を binary splitting で再帰的に分割し、BigInt の整数演算と整数平方根で計算します。指定桁数より 18 桁多く計算してから切り捨てます。保存済みの円周率の桁表を読み出しているわけではありません。

このページは円周率そのものを厳密に表しますか?

いいえ。円周率は無限に続くため、有限の文字列で円周率そのものを厳密には表せません。このページは高精度計算を行い、指定した小数点以下の桁数までの先頭桁列を返します。

ここでいう先頭 n 桁とは何ですか?

入力欄では小数点以下の桁数を数えます。100 を入れると、結果は 3. のあとに 100 桁です。

なぜ 5,000 桁を超えると先頭+末尾表示になるのですか?

大きな文字列をそのまま描画すると不要なレイアウト負荷が増えるため、既定では先頭と末尾だけを見せます。コピーや TXT 保存では全文を保持しています。

時間チャレンジとは何ですか?

チェックポイントを小さい桁数から順に試し、指定時間内に計算が完全に終わったもののうち最大の桁数を残すモードです。制限時間を過ぎてから完了した結果は採用しません。

停止を押すとどうなりますか?

桁数指定モードでは進行中の計算を取り消し、未完成の結果は表示しません。時間チャレンジでは進行中の計算を取り消し、直前に完了したチェックポイントがあればその結果を残します。

関連する電卓