Python 中的指数计算
Exponential calculation in Python
在试验 Euler 99 时,我注意到这些操作需要不同的时间:
>>> 632382**518061 # never finishes..
>>> 632382**518061 > 519432**525806 # finishes in few seconds
True
请问这是什么原因?
问题是 python 尝试打印第一个结果。但是这个数字有无数个数字, python 直到遇到换行符才刷新输出,换行符是在将所有数字发送到标准输出之后。正如@abarnert 所提到的,更糟糕的是将数字转换为字符串以进行打印。这需要相当大的内存分配和处理能力。另一方面,第二个表达式只需要打印一个 True
。如果您分配给第一个表达式,您可以检查它:
>>> a = 632382**518061
这样就抑制了数字的输出。
在试验 Euler 99 时,我注意到这些操作需要不同的时间:
>>> 632382**518061 # never finishes..
>>> 632382**518061 > 519432**525806 # finishes in few seconds
True
请问这是什么原因?
问题是 python 尝试打印第一个结果。但是这个数字有无数个数字, python 直到遇到换行符才刷新输出,换行符是在将所有数字发送到标准输出之后。正如@abarnert 所提到的,更糟糕的是将数字转换为字符串以进行打印。这需要相当大的内存分配和处理能力。另一方面,第二个表达式只需要打印一个 True
。如果您分配给第一个表达式,您可以检查它:
>>> a = 632382**518061
这样就抑制了数字的输出。