先贴一段维基百科的内容:
计算机时代计算π
上万位以上的小数位值通常利用高斯-勒让德算法或波温算法;另外以往亦曾使用于1976年发现的萨拉明-布伦特算法。
第一个π和1/π的小数点后首一百万位利用了古腾堡计划。最新纪录是2002年9月得出的1,241,100,000,000个小数位,由拥有1TB主内存的64-node日立超级计算机,以每秒200亿运算速度得出,比旧纪录多算出一倍(206亿小数位)。此纪录由以下梅钦类公式得出:
-
(K. Takano, 1982年)
-
(F. C. W. Störmer, 1896年)
这么多的小数位没什么实用价值,只用以测试超级计算机。
1996年,David H. Bailey、Peter Borwein及西蒙·普劳夫发现了π的其中一个无穷级数:
以上述公式可以计算π的第n个二进制或十六进制小数,而不需先计算首n-1个小数位。此类π算法称为贝利-波尔温-普劳夫公式。请参考Bailey's website 上相关程式。
法布里斯·贝拉于1997年给出了计算机效率上高出上式47%的BBP算法:
请参考Fabrice Bellard's PI page 。
其他计算圆周率的公式包括:
-
(拉马努金Ramanujan)
-
(David Chudnovsky及Gregory Chudnovsky)
编写计算机程序时,也可以利用反三角函数直接定义值,但是编译器必须具备三角函数的函式库:
利用正弦函数
利用