Классическим алгоритмом для вычисления цифр pi
является алгоритм Гаусса-Лежандра. Хотя он не такой быстрый, как некоторые из более современных алгоритмов, он имеет преимущество в том, что он понятен.
Пусть
a_0 = 1
b_0 = 1/Sqrt(2)
t_0 = 1/4
p_0 = 1
Тогда
a_(n+1) = (a_n + b_n) / 2
b_(n+1) = Sqrt(a_n * b_n)
t_(n+1) = t_n - p_n * (a_n - a_(n+1))^2
p_(n+1) = 2 * p_n
Тогда
pi =. (a_n + b_n)^2 / (4 * t_n)
Здесь (=.
означает «приблизительно равно»). Этот алгоритм демонстрирует квадратичную сходимость (число правильных десятичных знаков удваивается с каждой итерацией).
Я предоставлю вам возможность перевести это на C #, включая обнаружение арифметической библиотеки произвольной точности.