繁体   English   中英

Python ** 和 % 大数字运算符的行为

[英]Behavior of Python ** and % operators with big numbers

When I put in Python interpreter a ** b % c with large a (20 figures) b (4 figures) c (20 figures) I saw that Python calculates it pretty fast, almost like pow (a,b,c). 我预计 Python 首先计算 a ** b 然后得到结果的模数 (%) 的另一种行为,这样的计算将花费更多的时间。

幕后的魔力在哪里?

如果您正在输入 Python 解释器,例如:

20937505974095709374 ** 3438

然后看到几秒钟的等待。 然后尝试:

20937505974095709374 ** 3438 % 6

看到没有等待,想知道为什么会有差异,那么您在第一个实例中看到的延迟实际上是您的终端缓冲并将您刚刚创建的大量数字打印到屏幕上的时间。

在现代计算机上,20 个数字小得可笑。 尝试 2000 个数字,您可能会发现差异。

另外,这个过去的问题是相关的: Python 如何实现内置的 function pow()?

除了 Python 支持任意精度整数之外,幕后没有任何魔法,并且实现得很好。 它确实计算了 a**b,然后是 %c。

今天的计算机速度惊人,非常复杂的计算可以在几乎没有时间的情况下进行。 你需要重复这样的计算很多次才能看到延迟; 我会从一百万开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM