zoukankan      html  css  js  c++  java
  • 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
    运行截图如下:

  • 相关阅读:
    喵哈哈村的魔法考试 Round #1 (Div.2) 题解
    Codeforces Round #398 (Div. 2) A. Snacktower 模拟
    Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) F. Souvenirs 线段树套set
    视频人脸检测——Dlib版(六)
    pip/pip3更换国内源
    OpenCV添加中文(五)
    图片人脸检测——Dlib版(四)
    视频人脸检测——OpenCV版(三)
    Tesseract Ocr文字识别
    图片人脸检测——OpenCV版(二)
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586358.html
Copyright © 2011-2022 走看看