• Python实现计算圆周率π的值到任意位的方法示例


    Python实现计算圆周率π的值到任意位的方法示例

    本文实例讲述了Python实现计算圆周率π的值到任意位的方法。分享给大家供大家参考,具体如下:

    一、需求分析

    输入想要计算到小数点后的位数,计算圆周率π的值。

    二、算法:马青公式

    π/4=4arctan1/5-arctan1/239

    这个公式由英国天文学教授约翰·马青于1706年发现。他利用这个公式计算到了100位的圆周率。马青公式每计算一项可以得到1.4位的十进制精度。因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现。

    三、python语言编写出求圆周率到任意位的程序如下:    
    # -*- coding: utf-8 -*-
    from __future__ import division
    ####################导入时间模块
    import time
    ###############计算当前时间
    time1=time.time()
    ################算法根据马青公式计算圆周率####################
    number = int(raw_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,步长=2
    for i in xrange(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'

    运行结果:

        请输入想要计算到小数点后的位数n:20
        3.14159265358979323846
        总共耗时:9.77699995041s

        请输入想要计算到小数点后的位数n:50
        3.14159265358979323846264338327950288419716939937510
        总共耗时:2.30099987984s
    运行截图如下:

  • 相关阅读:
    Fedora 18 Beta 天高地厚
    Action script 天高地厚
    DLL动态连接库 天高地厚
    VC下Debug和Release区别
    如何解决"应用程序无法启动,因为应用程序的并行配置不正确"问题
    GetWindowLong (hwnd, 0)
    windows文件关联、打开方式列表之修改注册表攻略
    小游戏开发流程
    常用CHM帮助文档集锦下载
    关于jsp页面传递中文参数乱码的解决
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586358.html
Copyright © 2020-2023  润新知