python求pi的方法

本文实例讲述了python求pi的方法,是一篇翻译自国外网站的文章,分享给大家供大家参考。

具体实现方法如下:

#_*_ coding=utf-8 *_*
## {{{ http://code.activestate.com/recipes/578130/ (r5)
def pi(places=10):
  """Computes pi to given number of decimal places
    参数places表示要返回的pi的小数点后位数
    方法:先整体扩大10**8(10的八次方)倍,然后计算完成后再缩小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
  #这里的n 和d 分别为每一项的分子与分母 ,na 和 da 分别为分子和分分母后一项比前一项增加的数值
  #这里的//可不是C++中的注释,而是除的意思
  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 picirc(radius, aspect_ratio=5):
  """Display the digit of pi in a circle of given radius
    radius:显示的半径
    aspect_ratio:调节显示的比率参数
  """
  #display_width为各行的显示长度
  display_width = int(radius * aspect_ratio + 10)
  pi_str = repr(pi(int(2 * radius ** 2 * aspect_ratio)))
  pos = 0
  #cols为每一行中要显示的数字个数
  for i in range(2 * radius):
    cols = int(0.5 + aspect_ratio * (radius**2 - (radius-(i+0.5))**2) ** 0.5)
    print(pi_str[pos:pos+cols].center(display_width)) #将产生的pi数值生成的文本列表中相应的位数取出来显示在当前行
    pos += cols

if __name__ == '__main__':

  picirc(16)
## end of http://code.activestate.com/recipes/578130/ }}}

显示的结果为:

                  31415926535897932384
              6264338327950288419716939937510582
            0974944592307816406286208998628034825342117
          06798214808651328230664709384460955058223172535940
         81284811174502841027019385211055596446229489549303819644
        288109756659334461284756482337867831652712019091456485669234
       6034861045432664821339360726024914127372458700660631558817488152
      09209628292540917153643678925903600113305305488204665213841469519415
     11609433057270365759591953092186117381932611793105118548074462379962749
    5673518857527248912279381830119491298336733624406566430860213949463952247
    371907021798609437027705392171762931767523846748184676694051320005681271452
   63560827785771342757789609173637178721468440901224953430146549585371050792279
   689258923542019956112129021960864034418159813629774771309960518707211349999998
   3729780499510597317328160963185950244594553469083026425223082533446850352619311
   88171010003137838752886587533208381420617177669147303598253490428755468731159562
   86388235378759375195778185778053217122680661300192787661119590921642019893809525
   72010654858632788659361533818279682303019520353018529689957736225994138912497217
   75283479131515574857242454150695950829533116861727855889075098381754637464939319
   2550604009277016711390098488240128583616035637076601047101819429555961989467678
   374494482553797747268471040475346462080466842590694912933136770289891521047521
   62056966024058038150193511253382430035587640247496473263914199272604269922796
    782354781636009341721641219924586315030286182974555706749838505494588586926
    9956909272107975093029553211653449872027559602364806654991198818347977535
     66369807426542527862551818417574672890977772793800081647060016145249192
      17321721477235014144197356854816136115735255213347574184946843852332
       3907394143334547762416862518983569485562099219222184272550254256
        887671790494601653466804988627232791786085784383827967976681
         45410095388378636095068006422512520511739298489608412848
          86269456042419652850222106611863067442786220391949
            4504712371378696095636437191728746776465757
              3962413890865832645995813390478027
                  59009946576407895126

希望本文所述对大家的Python程序设计有所帮助。

(0)

相关推荐

  • Python素数检测的方法

    本文实例讲述了Python素数检测的方法.分享给大家供大家参考.具体如下: 因子检测: 检测因子,时间复杂度O(n^(1/2)) def is_prime(n): if n < 2: return False for i in xrange(2, int(n**0.5+1)): if n%i == 0: return False return True 费马小定理: 如果n是一个素数,a是小于n的任意正整数,那么a的n次方与a模n同余 实现方法: 选择一个底数(例如2),对于大整数p,如果2^(

  • Python中用max()方法求最大值的介绍

    max() 方法返回其参数最大值:最接近正无穷大的值. 语法 以下是max()方法的语法: max( x, y, z, .... ) 参数 x -- 这是一个数值表达式. y -- 这也是一个数值表达式. z -- 这是一个数值表达式. 返回值 此方法返回其参数的最大值. 例子 下面的例子显示了max()方法的使用. #!/usr/bin/python print "max(80, 100, 1000) : ", max(80, 100, 1000) print "max(-

  • python求素数示例分享

    复制代码 代码如下: # 判断是否是素数def is_sushu(num): res=True for x in range(2,num-1):  if num%x==0:   res=False   return res return res # 打印出素数列表print ([x for x in range(1000) if is_sushu(x)])

  • Python求导数的方法

    本文实例讲述了Python求导数的方法.分享给大家供大家参考.具体实现方法如下: def func(coeff): sum='' for key in coeff: sum=sum+'+'+str(key)+'*'+'x'+'**'+str(coeff[key]) return sum[1:] from sympy import * from sympy.core.sympify import SympifyError expr = func({2:0,3:1,4:2,5:7}) x = Sym

  • Python求解平方根的方法

    本文实例讲述了Python求解平方根的方法.分享给大家供大家参考.具体如下: 主要通过SICP的内容改写而来.基于newton method求解平方根.代码如下: #!/usr/bin/python def sqrt_iter(guess,x): if(good_enough(guess, x)): print guess else: sqrt_iter(improve(guess, x),x) def improve(guess, x): return average(guess, x/gue

  • python求列表交集的方法汇总

    本文实例汇总了python求列表交集的方法.分享给大家供大家参考.具体方法如下: 交集对于给定的两个集合A 和 集合B 的交集是指含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合叫交集了,下面给出几个python求列表交集例子供大家参考. 方法1 遍历b1,如果某个元素同时也存在于b2中,则返回 复制代码 代码如下: b1=[1,2,3] b2=[2,3,4] b3 = [val for val in b1 if val in b2] print b3 运行结果如下 复制代码 代码如

  • python求众数问题实例

    本文实例讲述了python求众数问题的方法,是一个比较典型的应用.分享给大家供大家参考.具体如下: 问题描述: 多重集中重数最大的元素称为众数...就是一个可以有重复元素的集合,在这个集合中重复的次数最多的那个数就叫它的众数... 如S = [1,2,2,2,3,5] 重数是2,其重数为3 实例代码如下: list_num = [] list_num_count = 0 dict_num ={} #从文件读入,文件第一行为集合中元素的个数,以后每一行为一个元素 list_num_count =

  • python求解水仙花数的方法

    本文实例讲述了python求解水仙花数的方法.分享给大家供大家参考.具体如下: 一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. #!/usr/bin/python def get_flower(n, ofile): D_pow=[pow(i,n) for i in range(0,10)] V_min=1*pow(10,n-1) V_max=sum((9*pow(10,x) for x in range(0,n))) T_count=0 print D

  • 简单介绍Python中用于求最小值的min()方法

    min()方法返回它的参数最小值:最接近负无穷大的值. 语法 以下是min()方法的语法: min( x, y, z, .... ) 参数 x -- 这是一个数值表达式. y -- 这也是一个数值表达式. z -- 这也是一个数值表达式. 返回值 此方法返回最小的它的参数. 例子 下面的例子显示了min()方法的使用. #!/usr/bin/python print "min(80, 100, 1000) : ", min(80, 100, 1000) print "min(

  • Python实现求最大公约数及判断素数的方法

    本文实例讲述了Python实现求最大公约数及判断素数的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python def showMaxFactor(num): count = num / 2 while count > 1: if num % count == 0: print 'largest factor of %d is %d' % (num, count) break #break跳出时会跳出下面的else语句 count -= 1 else: prin

随机推荐