因为根据马青公式π/4=4arctg1/5-arctg1/239
又因为arctgX=X-(1/3)X^3+(1/5)X^5-(1/7)X^7+......+[(-1)^(n-1)/((2n-1)]*X^(2n-1))
变形得π/4=(4/5-1/239)-1/3(4/5^3-1/239^3)+1/5(4/5^5-1/239^5)……
所以可以用python语言编写出求圆周率到任意位的程序如下:
#!/usr/bin/env python #路径引导
# -*- coding: cp936 -*- #包含中文注释标记
n = int(raw_input('请键入想要计算到小数点后的位数n:')) #先键入字符串,再转化为整数
w = n+10 #多计算10位,防止尾数取舍的影响
b = 10**w #算到小数点后w位
x1 = b*4//5 #求含4/5的首项
x2 = b// -239 #求含1/239的首项
he = x1+x2 #求第一大项
n *= 2 #设置下面循环的终点,即共计算n项
for i in xrange(3,n,2): #循环初值=3,末值2n,步长=2
x1 //= -25 #求每个含1/5的项及符号
x2 //= -57121 #求每个含1/239的项及符号
x = (x1+x2) // i #求两项之和
he += x #求总和
pai = he*4 #求出π
pai //= 10**10 #舍掉后十位
print pai #输出圆周率π的值,
#在ThinkPad SL500笔记本电脑上,把π计算到小数点后1万位用时1秒47,十万位用时1分5秒74