使用MicroPython计算任意位数圆周率

MicroPython相关代码、库、软件、工具
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

使用MicroPython计算任意位数圆周率

#1

帖子 shaoziyang »

得益于python的强大计算能力,我们在MicroPython可以轻松的计算pi。计算圆周率需要使用到大整数计算功能,一些版本中不支持大整数,就不能使用这个方法:

Code: Select all

"""
文件:pi.py
说明:用MicroPython计算任意精度圆周率计算
作者:未知
版本:
时间:
修改:邵子扬
2016.5
v1.1
http://bbs.micro-python.com/forum.php
"""
import time

def pi(places=10):
# 3 + 3*(1/24) + 3*(1/24)*(9/80) + 3*(1/24)*(9/80)*(25/168)
# The numerators 1, 9, 25, ... are given by (2x + 1) ^ 2
# The denominators 24, 80, 168 are given by (16x^2 -24x + 8)
extra = 8
one = 10 ** (places+extra)
t, c, n, na, d, da = 3*one, 3*one, 1, 0, 0, 24

while t > 1:
n, na, d, da = n+na, na+8, d+da, da+32
t = t * n // d
c += t
return c // (10 ** extra)

def pi2(n=10):
r=6*(10**n)*1000
p=0
k=0
c=r//2
d=c//(2*k+1)
while d>0:
p=p+d
k=k+1
k2=2*k
c=c*(k2-1)//(4*k2)
d=c//(k2+1)
return p//1000

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章