写一个python计算圆周率算法 输出无穷位小数
时间: 2023-01-28 13:59:24 浏览: 128
这是一种使用 Python 计算圆周率的算法,它会生成一个无穷位小数:
```
def calc_pi():
q, r, t, k, n, l = 1, 0, 1, 1, 3, 3
while True:
if 4 * q + r - t < n * t:
yield n
nr = 10*(r-n*t)
n = ((10*(3*q+r))//t)-10*n
q *= 10
r = nr
else:
nr = (2*q+r)*l
nn = (q*(7*k)+2+(r*l))//(t*l)
q *= k
t *= l
l += 2
k += 1
n = nn
r = nr
# 用生成器生成无穷位小数
pi_digits = calc_pi()
# 输出前 100 位小数
print(f"3.{''.join(str(next(pi_digits)) for i in range(100))}")
```
输出结果:
```
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
```
阅读全文