以下是代码:
#include <stdio.h>
long f[2801];
int main()
{
long i = 0, c = 2800, d = 0, e = 0, g = 0;
for (i = 0; i < c; ++i)
f[i] = 2000;
for (;;) {
d = 0;
g = c * 2;
if (!g)
break;
i = c;
for(;;) {
d += f[i] * 10000;
--g;
f[i] = d % g;
d /= g;
--g;
--i;
if (!i) break;
d *= i;
}
printf("%.4ld",e+d/10000);
e = d % 10000;
c -= 14;
}
return 0;
}我的问题是:这段代码是如何用高十进制精度计算π的,它使用的数学公式是什么?
发布于 2016-10-01 03:51:00
这是荷兰CWI研究所的Dik .温特编写的PI程序的格式化副本。最初是以模糊的形式写成的,用两行或三行的形式,Dik和其他的变体输出了不同数量的PI (例如800,15,000等)。基于一个数列的评价。
这是一种被称为“spigot算法”的程序,旨在输出特定数量的数字。你可以通过谷歌搜索迪克温特和“蜘蛛算法”找到更多信息。以下是一些例子:
用C语言计算Pi对算法进行了详细的分析,并给出了一些未回答的问题。
数字,而不是电影
https://stackoverflow.com/questions/39802720
复制相似问题