- 締切済み
C言語などで円周率を求める方法を教えてください
C言語などで円周率を求める方法を教えてください C言語でなくても構いませんが1000桁くらい求めたいです よろしくお願いします
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- rndwalker7
- ベストアンサー率45% (5/11)
技術評論社 河西朝雄著の 「C言語によるはじめてのアルゴリズム入門」 という本の 第二章の数値計算の部分に πの1000桁を求めるプログラムが載っています。 こちらを参考にするとよいとおもいます。 円周率をもとめるのには マチンの公式を使っています。 多桁の数を計算する関数も作っています。
- nag0720
- ベストアンサー率58% (1093/1860)
円周率の計算自体はそんなに難しくありません。 π=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)
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