在不损失C++或 Python 性能的情况下计算 pi
Calculate pi without losing performance in C++ or Python
我正在寻找一种算法来计算 pi 并继续计算,而不必重新计算所有内容。我正在尝试在 pi 中寻找一个数字。我在 Python 中制作了一个算法来做到这一点,但它随着时间的推移而变慢(显然):
def make_pi(lenght):
q, r, t, k, m, x = 1, 0, 1, 1, 3, 3
for j in range(lenght):
if 4 * q + r - t < m * t:
yield m
q, r, t, k, m, x = 10*q, 10*(r-m*t), t, k, (10*(3*q+r))//t - 10*m, x
else:
q, r, t, k, m, x = q*k, (2*q+r)*x, t*x, k+1, (q*(7*k+2)+r*x)//(t*x), x+2
piArray = []
for i in make_pi(50):
piArray.append(str(i))
piArray = piArray[:1] + ['.'] + piArray[1:]
piString = "".join(piArray)
lookingFor="9833673362"
found=False
current=10
while found==False:
print(str(current))
for i in make_pi(current):
piArray.append(str(i))
piArray = piArray[:1] + ['.'] + piArray[1:]
piString = "".join(piArray)
if piString[-len(lookingFor):] == lookingFor:
found=True
print("Found! Tries: " + str(current - 10))
current+=1
我需要更快的 Python 算法,甚至可能C++。(更快的我的意思是它不应该减慢)
在这种情况下,我将使用spigot算法,该算法允许在有限的内存量下计算pi的第n位数字,并且不随数字的索引而增加; 特别是Bailey-Borwein-Plouffe变体。
如果我正确理解您的问题,此链接很可能是您正在寻找的:
该公式可以直接计算任何给定π数字的值,而无需计算前面的数字
相关文章:
- 如何在不使用乘除运算符的情况下计算 A 的 B 次幂?
- C++在不使用pow或循环的情况下计算一个数字的幂
- 如何在不导致堆栈溢出的情况下计算非常大的数字和很小的 HCF.我正在使用欧几里得算法
- 在没有查找表的情况下计算大数的位长度
- 在不创建子矩阵的情况下计算C++矩阵的行列式
- 如何在不使用提取操作员的情况下计算TXT文件中的数量数
- 在不损失C++或 Python 性能的情况下计算 pi
- 如何在不使用loop或std :: comguate()的情况下计算向量的总和
- 程序不会降低最低分数并在没有它的情况下计算平均值
- 如何遍历二叉树并在不传递值的情况下计算值的出现次数
- 在不使用 strlen() 的情况下计算字符串中的字母
- 在没有外部库的情况下C++计算大量数字
- 尝试在没有opencv calcHist()的情况下计算我自己的直方图
- 如何在没有数学的情况下计算第 n 个根
- 在不使用函数 pow 的情况下计算表达式的总和
- 我无法弄清楚如何在不使用 climits 的情况下计算最大和最小有符号数C++
- 在不模板的情况下计算另一个类的动态函数指针
- 在不切割变量的情况下计算双精度
- 在不能存储值的情况下计算序列
- 如何在没有数学函数(arctan)的情况下计算point和org(0,0)之间的快速路径角(最接近八个提供值之一)