こんにちは、円周率を計算するアルゴリズムを構築しましたが、長い浮動小数点数を使用しているため、結果として 3.14159 が得られます。さらに精度が必要です。どのように?コードは次のとおりです。
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
long double a, l, p, pi, r;
long long int n, m;
r = 100000;
a = r * sqrt (3) / 2 ;
n = 100000;
m = 6;
while (n > m)
{
a = sqrt (r / 2 * (r + a));
m = m * 2 ;
}
l = sqrt (4 * (pow (r, 2) - pow (a, 2)));
p = m * l;
pi = p / (2 * r) ;
cout << pi << endl;
cout << "number of corners used: " << m << endl;
return 0;
}
ちなみに私の高校には念のため24コア(12デュアルコアノード)のスーパーコンピュータがあります