PY题解,网上的Chudnovsky算法
2025-08-28 21:19:45
发布于:广东
6阅读
0回复
0点赞
这是算法公式:
非常阴间公式,这使我的Ctrl键旋转
from decimal import Decimal, getcontext
def chudnovsky(precision):
getcontext().prec = precision + 10
C = Decimal(426880) * Decimal(10005).sqrt()
M = Decimal(1)
L = Decimal(13591409)
X = Decimal(1)
K = Decimal(6)
S = L
for k in range(1, precision // 14 + 10):
M = M * (K**3 - 16*K) // (k**3)
L = L + 545140134
X = X * (-262537412640768000)
term = M * L / X
S += term
K += 12
if abs(term) < Decimal(10)**(-precision - 5):
break
pi = C / S
return pi.quantize(Decimal(10)**(-precision))
if __name__ == "__main__":
precision = int(input())
pi_value = chudnovsky(precision+20)
pi_str = str(pi_value)
print(pi_str[:2])
pr = pi_str[2:]
for i in range(precision):
print(pr[i], end="")
if((i+1)%50==0):
print(" ")
elif((i+1)%10==0):
print(" ", end="")
全部评论 1
我真的不是故意Ctrl+C的,主要是这个东西有点超出人类理解范畴了
1周前 来自 广东
0
有帮助,赞一个