马青公式
π/4=4arctan1/5-arctan1/239
这个公式由英国天文学教授约翰·马青于1706年发现。他利用这个公式计算到了100位的圆周率。马青公式每计算一项可以得到1.4位的十进制精度。因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现。
# -*- coding: utf-8 -*-from __future__ import division####################导入时间模块import time###############计算当前时间time1=time.time()################算法根据马青公式计算圆周率####################number = int(input('请输入想要计算到小数点后的位数n:'))# 多计算10位,防止尾数取舍的影响number1 = number+10# 算到小数点后number1位b = 10**number1# 求含4/5的首项x1 = b*4//5# 求含1/239的首项x2 = b// -239# 求第一大项he = x1+x2#设置下面循环的终点,即共计算n项number *= 2#循环初值=3,末值2n,步长=2for i in range(3,number,2):# 求每个含1/5的项及符号x1 //= -25# 求每个含1/239的项及符号x2 //= -57121# 求两项之和x = (x1+x2) // i# 求总和he += x# 求出πpai = he*4#舍掉后十位pai //= 10**10############ 输出圆周率π的值paistring=str(pai)result=paistring[0]+str('.')+paistring[1:len(paistring)]print (result)time2=time.time()print (u'总共耗时:' + str(time2 - time1) + 's')

