【发布时间】:2020-12-02 00:33:56
【问题描述】:
我注意到我最近尝试使用的一些用于将 pi 的数字查找到多个小数的代码开始运行得非常快,通常每秒达到数千个小数(可能被夸大了,但每秒的数量相当可观),但在达到 10 000 或更高的小数点后,每秒只会添加 50 个左右的小数点。
我之前听说有一些方法可以构建您的代码,这样您就不会出现此问题。我不确定它是否是通过摆脱已经处理的数字或其他东西来完成的。
一些可能有用的代码,尽管我正在寻找更多我可以使用的技术的一般答案,而不是针对我现在的特定用例的技术。
这是查找数字的代码:
while counter != decimal + 1:
if 4 * q + r - t < n * t:
# yield digit
yield n
# insert period after first digit
if counter == 0:
yield '.'
# end
if decimal == counter:
print('')
break
counter += 1
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
打印数字的代码:
for d in pi_digits:
print(d, end='')
i += 1
if i == 100:
print("")
i = 0
另外,我目前以 100 行打印 pi 的数字,我是否可以通过减少或增加一行中的位数来获得任何速度优势,这样代码就不必经常换行?
【问题讨论】:
标签: python python-3.x