求π的方法有很多种,最适合编程的是丘德诺夫斯基公式(以下是它的简化版本,莱布尼茨公式)
π/4=1-1/3+1/5-1/7+1/9-1/11+……
根据这个公式就能求π了
先用手动的方法求π
print((1-1/3+1/5-1/7+1/9-1/11+1/13-1/15+1/17)*4)
运行结果
3.2523659347188767
看来算几次时,这个结果不准确
要用到循环
pi=1
num=1
for times in range(10000):
接下来就是算法本身了
num=num+2
pi=pi-1/num
num=num+2
pi=pi+1/num
print(pi*4,times+1)
但这样会让运行结果不整齐(如下图)
3.14164270113493 9990
3.1416426961259183 9991
3.1416426911179087 9992
3.1416426861109015 9993
3.141642681104896 9994
3.141642676099892 9995
3.1416426710958896 9996
3.141642666092888 9997
3.1416426610908874 9998
3.1416426560898874 9999
3.1416426510898874 10000
现在就需要格式化函数了
print("{0:.29f}".format(pi*4),times+1)
部分运行结果
3.14164270113493016012284897442 9990
3.14164269612591828817471650837 9991
3.14164269111790872557321563363 9992
3.14164268611090147231834635022 9993
3.14164268110489608432089880807 9994
3.14164267609989211749166315713 9995
3.14164267109588957183063939738 9996
3.14164266609288800324861767876 9997
3.14164266109088741174559800129 9998
3.14164265608988735323237051489 9999
3.14164265108988738361972536950 10000
完整代码
pi=1
num=1
for times in range(10000):
num=num+2
pi=pi-1/num
num=num+2
pi=pi+1/num
print("{0:.29f}".format(pi*4),int((num-1)/4))
省略的长度和循环次数可以自行调整