为什么你几乎不能在家用Python计算出十亿位数的圆周率

为什么在家使用Python几乎不可能计算出十亿位数的圆周率?

比你想象的更难

由Midjourney带来的图片

介绍

2022年6月9日,谷歌创下了计算圆周率数字最多的世界纪录——1亿万!这一伟大的成就得益于在谷歌云上运行的y-cruncher程序。它数了157天、23小时、31分钟和7.651秒。

如果10亿是100万倍于1亿万的话,运行时间会相应减少吗?换句话说,只需要136秒吗?

然而,136秒是不太现实的。家用计算机远没有谷歌云最强大环境的计算能力。那么,比如说24小时的运行时间会更合理吗?

事实证明,即使在24小时内计算出10亿位的圆周率也是一个巨大的梦想。本文将在Python中进行解释和证明。

首先,为什么math.pi不正确?

import mathprint(math.pi)

3.141592653589793

math.pi只有15位精确度。虽然不多,但足以满足科学中最高精度的计算。

例如,美国国家航空航天局(NASA)喷气推进实验室(JPL)使用15位圆周率数字在行星之间导航。举个例子,这种精度足以计算半径为150亿英里的圆的周长。结果的940亿英里周长误差不会超过你小指的宽度。想想这个!

那么,为什么要计算10亿位甚至1亿万位的圆周率呢?

嗯,给你一个极客的回答:“因为它会非常酷!”。

如果我们增加小数的精确度会怎样?

在我们拿出大炮(算法!)之前,如果我们在Python中增加小数精确度来近似π呢?这将简单得多。

对于近似,我们将使用拉马努金的圆周率公式。全世界的数学家都用它来无法估量地近似π。

from decimal import Decimal…