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

>>> 632382**518061  # never finishes..

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

我想知道为什么会这样?

最佳答案

问题是python试图打印第一个结果。但是这个数字有无数个数字,在遇到换行符之前,python不会刷新输出,换行符是在将所有数字发送到标准输出之后。正如@abarnett所提到的,更糟糕的是将数字转换为字符串以进行打印。这需要相当大的内存分配和处理能力。另一方面,第二个表达式只需要打印一个True。如果指定给第一个表达式,则可以检查它:

 >>> a = 632382**518061

这样就抑制了数字的输出。

09-10 01:37