猫史档案馆


【快速计算圆周率】9行python代码计算圆周率

用户:SunshineCodeSunshineCode查看:1 回复:2 评论:1 创建时间:2019-12-08T13:26:33


首先,这个代码请在网页版海龟编辑器上运行。

话不多说,先给代码!

while(1):
    import time
    time1=time.time()
    number = int(input('请输入想要计算到小数点后的位数n:'))
    number1 = number+10
    b = 10**number1
    x1 = b*4//5
    x2 = b// -239
    he = x1+x2
    number *= 2
    for i in xrange(3,number,2):
        x1 //= -25
        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')
    print('——————————————————————————————————————')

等等等等……不是9行代码吗?怎么给我22行代码?

别急!我们来提取一下这22行代码中的精华,尽量压缩代码行数!

依我自己的能力,我把这22行代码压缩到了9行:

number = int(input('请输入想要计算到小数点后的位数n:'))
x1 = 10**(number+10)*4//5
x2 = 10**(number+10)// -239
he = x1+x2
for i in xrange(3,number*2,2):
    x1 //= -25
    x2 //= -57121
    he += (x1+x2) // i
print(str(he*4//(10**10))[0]+str('.')+str(he*4//(10**10))[1:len(str(he*4//(10**10)))])

这样,我们就只用了9行python代码,计算无限位数的圆周率。

不过,第一个代码虽然比较长,但是使用方便,并且可以计时。第二个代码就是第一个代码的本质,最大的优点就是简短,但相比于第一个代码还非常不足。

这是使用马青公式计算圆周率。喵电脑实测:

1000位 0.3s

3000位 0.9s

5000位 1.7s

8000位 3.1s

10000位:5.8s

20000位:22.2s

总的来说这个速度还是比较快的,尽管越到后面越吃力。不过相比于y-cruncher,速度还是没法比的。如果要真正计算圆周率,还是推荐使用诸如山谷居士或者ycruncher这样的软件,1个多小时跑出10亿位(亲测可行)。


回复

上一页1 页 / 共 1下一页
比比芭比波哩波比比芭比波哩波

你的运算能力好强,不过9行代码这个我复制粘贴运行后发现你的range拼写错误多加了一个x字母

点赞0


评论


SunshineCodeSunshineCode

@比比芭比波哩波发现代码有一个问题,纠正一下代码:

number = int(input('请输入想要计算到小数点后的位数n:'))
x1 = 10**(number+10)*4//5
x2 = 10**(number+10)// -239
he = x1+x2
for i in range(3,number*2,2):
    x1 //= -25
    x2 //= -57121
    he += (x1+x2) // i
print(str(he*4//(10**10))[0]+str('.')+str(he*4//(10**10))[1:len(str(he*4//(10**10)))])

点赞1


评论