我正在使用Python解决大规模的阶乘计算问题,发现在计算完毕后将结果转换为字符串并保存至文件时需要相同的时间。我已经尝试了使用通用方法a = str(a)进行整数转换,但感觉有更好的方式,如使用缓冲或库。
例如:
计算100,000的阶乘= 456,574位数字
计算时间:6.36秒
转换时间:5.20秒
如果您有任何建议/解决方案,请告诉我!任何帮助都会有所裨益。
例如:
计算100,000的阶乘= 456,574位数字
计算时间:6.36秒
转换时间:5.20秒
如果您有任何建议/解决方案,请告诉我!任何帮助都会有所裨益。
import time
factorial = 1
print(" ")
one = int(input("lower = "))
two = int(input("higher = "))
start = time.time()
for x in range(one,two + 1):
factorial = factorial * two
two = two - 1
end = time.time()
print("DONE! ")
print(end - start, "Seconds to compute")
start = time.time()
factorial = str(factorial)
f = open('Ans_1.txt','w')
f.write(factorial)
f.close()
end = time.time()
print(end - start, "Seconds to convert and save")
print(len(factorial), "Digets")
int
转换为str
而言,str(int)
是最快的。但是,您的阶乘逻辑肯定有改进的空间。 - Moinuddin Quadrimath.factorial(100000)
时得到了类似的运行时间。 - user3483203math.factorial
,那么我怀疑在Python 2.7中无法做任何事情。在Python 3中,它会比较快。这里有一个讨论可能会引起兴趣为什么Python 2.x中的math.factorial比3.x慢得多? - Moinuddin Quadrimath.factorial(100000)
比使用此代码快约20倍。我已经尝试过30多种不同的算法,试图获得比过去的“数学”更快的时间,最终放弃了。如果OP想要使这段代码更快,我建议尽量减少涉及大数字的步骤。存储大数字需要更多时间来转换成小数字。 - 1313e