🪀

授業で教えてもらえない円周率の求め方

2022/11/14に公開約900字

WIREDというYouTudeチャンネルで円周率の求め方が紹介されていました。円周率は3.14だということしか覚えていませんし、動画内で紹介されていた方法の簡単さに驚きました。
学校では教えてもらえないそうです...

https://youtu.be/SIUl9Mx51W4?t=402

コード

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);
}
脚注
  1. QueryPerformanceCounter関数で使ったくらいです ↩︎

Discussion

ログインするとコメントできます