プロが教えるわが家の防犯対策術!

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

よろしくお願いします

A 回答 (3件)

技術評論社


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

円周率の計算自体はそんなに難しくありません。


π=6Σ[n→∞]{(2n)!/((2^(4n+1)(n!)^2(2n+1))}
などのような級数をプログラミングすれば可能です。
http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8% …

問題は桁数です。普通にプログラミングしたのでは、その言語がサポートしている有効桁数までしか求めることができません。

それを解決するには、有効桁数を設定できるような数値計算ライブラリを入手するか、自作するしかありません。

自作する一番簡単な方法は、例えば有効桁数1000桁の数値を扱いたい場合、1000桁の文字列(または1000個の配列)に数値を格納し、その文字列(配列)同士で加減乗除ができるような関数を作ります。
    • good
    • 0

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!