python求圆周率马青公式_Python 实现丘德诺夫斯基(Chudnovsky)法計算高精度圓周率...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

源码:(需要将 @ 替换成 ASCII空格)

# -*- coding: UTF-8 -*-

# 丘德诺夫斯基法計算高精度圓周率程序

# Calculating PI with Chudnovsky-Series

# Author: Idealguy,2018, Shanghai

#

import time

# In following functions, High-Prec Nums are both amplified 10**n

# pre-defined: Base=10**n

#

def Sqrt10005(): # Sqrt(10005L) by Imitate-Manual Method

@@@@n1=0

@@@@c=10002499687 #100.02499687

@@@@mc=8; m=mc

@@@@f1=10**mc

@@@@f2=f1*f1

@@@@a=10005*f2-c*c

@@@@while mc

@@@@@@@@a*=f2

@@@@@@@@b=c*2*f1

@@@@@@@@d=a//b

@@@@@@@@c=c*f1+d

@@@@@@@@a-=d*(b+d)

@@@@@@@@mc+=m

@@@@@@@@if mc*2>n: m=n-mc

@@@@@@@@else: m=mc

@@@@@@@@f1=10**m

@@@@@@@@f2=f1*f1

@@@@@@@@n1+=1

@@@@return c

# Main Program

#

print ("Chudnovsky法計算高精度圓周率程序")

while 1:

@@@@n=int(input('計算位數[1..50000],0:退出:'))

@@@@if n<=10: break

@@@@n+=2

@@@@base=10**n

@@@@t=time.clock()

@@@@# Start Calculating

@@@@A=13591409*base; B=A

@@@@c3=13591409

@@@@i=1

@@@@while abs(A)>5:

@@@@@@@@c1=((108-72*i)*i-46)*i+5

@@@@@@@@c2=10939058860032000*i**3

@@@@@@@@c4=c3; c3+=545140134

@@@@@@@@i+=1

@@@@@@@@A=A*c1*c3//(c2*c4) # Must in form: A=A*...

@@@@@@@@B+=A

@@@@p=426880*base*Sqrt10005()//B//100

@@@@# Post access

@@@@print ("用時= %8.3f 秒" % (time.clock()-t))

@@@@s=input('是否显示结果(Y/N):')

@@@@if (s=='Y')|(s=="y"): print ("PI="+str(p))

# end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值