立即注册

micropython-microbit 中文社区

查看: 43|回复: 0

【EPY】圆周率计算

[复制链接]
  • TA的每日心情
    开心
    2019-5-12 11:06
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2019-9-9 09:34:06 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    使用python的大整数计算功能,只需要几行代码,就可以方便的计算圆周率,顺便也可以测试一下CPU的性能。

    测试代码:

    1. import epy

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

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

    14. def pi_t(n=10):
    15.     t1=epy.millis()
    16.     t=pi(n)
    17.     t2=epy.millis()
    18.     print('elapsed: ', (t2 - t1), 'ms')
    19.     return t
    复制代码


    使用pt_t()就可以计算指定位数的圆周率,默认是10位。

    回复

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 立即注册

    Archiver|手机版|小黑屋|micropython-microbit 中文社区

    GMT+8, 2019-9-23 17:25 , Processed in 0.084424 second(s), 20 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表