🪀
授業で教えてもらえない円周率の求め方
WIREDというYouTudeチャンネルで円周率の求め方が紹介されていました。円周率は3.14
だということしか覚えていませんし、動画内で紹介されていた方法の簡単さに驚きました。
学校では教えてもらえないそうです...
コード
10億回ほど計算させたところ、3.14159265まで出てくれました。
普段はfloat
しか使わないのでdouble
を使うのが新鮮。f
を書かなくていいのは羨ましい[1]
//===================================
// 円周率
//===================================
#include <cstdio>
int main()
{
size_t iteration = 10'000'000'000; // 試行回数
double result = 0.0; // 計算結果
double denominator = 1.0; // 分母
// 4 - 4/3 + 4/5 - 4/7 + ・・・
for (size_t i = 0; i < iteration; i++)
{
if (i % 2 == 0) result += 4.0 / denominator; // 偶数
else result -= 4.0 / denominator; // 奇数
denominator += 2;
}
printf("円周率: %.32f\n", result);
}
-
QueryPerformanceCounter関数で使ったくらいです ↩︎
Discussion