簡體   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