• 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
    运行截图如下:

  • 相关阅读:
    第三十五篇 os模块、sys模块、json模块、pickle模块
    第三十三篇 包
    <词云图>疾风剑豪-亚索词云图
    <爬虫>常见网址的爬虫整理
    <爬虫>反反爬虫的各种知识
    <爬虫>崔庆才的爬虫课
    <随便写>番茄工作法笔记
    <就业指导>为了找到更好的工作
    <人事面试>人事面试整理
    <面试题>面试题整理(101-200)
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586357.html
Copyright © 2020-2023  润新知