Python中的指数计算



在使用Euler 99实验时,我注意到这些操作需要不同的时间:

>>> 632382**518061  # never finishes..
>>> 632382**518061 > 519432**525806  # finishes in few seconds
True

我想知道这样做的原因是什么?

事实是python试图打印第一个结果。但是这个数字的数字数十亿个数字,而Python直到遇到新线后才冲洗输出,这是在将所有数字发送到标准输出之后。正如@abarnert提到的那样,更糟糕的是,将数字转换为打印它的字符串。这需要大量的内存分配和处理能力。在另一侧,第二个表达式只需要打印一个True即可。您可以检查是否分配给第一个表达式:

 >>> a = 632382**518061

这样,数字的输出被抑制了。

最新更新