• 締切済み

C言語などで円周率を求める方法を教えてください

C言語などで円周率を求める方法を教えてください C言語でなくても構いませんが1000桁くらい求めたいです よろしくお願いします

みんなの回答

回答No.3

技術評論社 河西朝雄著の 「C言語によるはじめてのアルゴリズム入門」 という本の 第二章の数値計算の部分に πの1000桁を求めるプログラムが載っています。 こちらを参考にするとよいとおもいます。 円周率をもとめるのには マチンの公式を使っています。 多桁の数を計算する関数も作っています。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

円周率の計算自体はそんなに難しくありません。 π=6Σ[n→∞]{(2n)!/((2^(4n+1)(n!)^2(2n+1))} などのような級数をプログラミングすれば可能です。 http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87 問題は桁数です。普通にプログラミングしたのでは、その言語がサポートしている有効桁数までしか求めることができません。 それを解決するには、有効桁数を設定できるような数値計算ライブラリを入手するか、自作するしかありません。 自作する一番簡単な方法は、例えば有効桁数1000桁の数値を扱いたい場合、1000桁の文字列(または1000個の配列)に数値を格納し、その文字列(配列)同士で加減乗除ができるような関数を作ります。

  • reiman
  • ベストアンサー率62% (102/163)
回答No.1

PHPならば <?php for($sum=0,$i=0;$i<20;$i++) { $sum+=dash(2*$i)/pow(2,4*$i+1)/pow(dash($i),2)/(2*$i+1); $result=$sum*6; print<<<EOL <div>{$i}:{$result}</div> EOL; } function dash($n) { if($n<2)return 1; return $n*dash($n-1); } ?> 結果: 0:3 1:3.125 2:3.1390625 3:3.1411551339286 4:3.14151117234 5:3.1415767157749 6:3.1415894253191 7:3.1415919823584 8:3.1415925111579 9:3.1415926228706 10:3.1415926468756 11:3.1415926521059 12:3.1415926532587 13:3.1415926535153 14:3.1415926535729 15:3.141592653586 16:3.1415926535889 17:3.1415926535896 18:3.1415926535897 19:3.1415926535898

関連するQ&A