用Python计算小数点后第n位的圆周率

import time

n = int(input('请输入想要计算到小数点后的位数n:'))
"""先输入字符串,再转换为整数"""

time1 = time.time()
"""获取计算前的系统时间"""

w = n + 10 # 多计算10位,防止尾数取舍的影响
b = 10 ** w # 算到小数点后w位
x1 = b * 4 // 5 # 求含4/5的首项
x2 = b // -239 # 求含1/239的首项
he = x1 + x2 # 求第一大项
n *= 2 # 设置下面循环的终点,即共计算n项

for i in rang(3, n, 2):
"""循环初值=3,末值n,步长=2"""
	x1 //= -25 # 求每个含1/5的项及符号
	x2 //= -57121 # 求每个含1/239的项及符号
	x = (x1 + x2) // i # 求两项之和
	he += x # 求总和
	pai = he * 4 # 求π的值
	pai //= 10 ** 10 # 舍掉后十位

file_name = 'pi_million_digits.txt'
with open(file_name, 'w') as file_object:
	file_object.write(str(pai))

time2 = time.time()
print("总耗时:" + str(time2 - time1) + "s")

计算100w精度大概耗时3816s。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值