2011-08-10 29 views
1

當我在Python解釋器中加入大a(20個數字)b(4個數字)c(20個數字)的** b%c時,我看到Python計算它很漂亮幾乎像pow一樣快速(a,b,c)。我期望Python首先計算一個** b的另一個行爲,然後獲得結果的模數(%),這樣的計算會花費更多的時間。場景背後的魔力在哪裏?大數字的Python **和%運算符的行爲

+1

您可以使用'pow'有效地計算'(x ** y)%z'。見http://stackoverflow.com/questions/101268/hidden-features-of-python/3371415#3371415 –

+0

謝謝所有參與 – Bole

回答

2

除了Python支持任意精度的整數之外,幕後並沒有什麼魔法,並且很好的實現。它確實計算了a ** b,然後%c。

0

今天的電腦是驚人的快,非常複雜的計算在什麼似乎像任何時候都可能發生。你需要重複這樣的計算很多次才能看到延遲;我會從一百萬開始。

6

如果你輸入到Python解釋是這樣的:

20937505974095709374 ** 3438 

然後看到了幾秒鐘等待。然後嘗試:

20937505974095709374 ** 3438 % 6 

而且看到沒有等待,想知道爲什麼是有區別的,那麼延遲您在第一時間看到實際上是你的終端以緩衝並打印大量的時間您剛剛在屏幕上創建的編號。

+1

是的,這正是問題所在,正如你可以通過將每個計算分配給一個變量而看到的比打印它。 – kindall