2013-11-22 70 views
-1

我在爲python 2.7.3中的大數字做mod,python給了我錯誤的答案,如下所示。如果數字很小,那麼它會給出正確的答案。python big number mod

任何人都可以解釋爲什麼發生這種情況,我怎麼能修復python? 下面的簡單腳本顯示小數字mod顯示正確的答案,但大數字mod給出錯誤的答案。

root# cat mod.py 

bigNum=46623871433466988486147975697094761425185742805822717249007 
smallNum=717249007 

print "bigNum % 3: " + str(bigNum % 3) 

print "smallNum % 3: " + str(smallNum % 3) 

root# python mod.py 

bigNum % 3: 0 
smallNum % 3: 1 

預先感謝您的幫助。

+3

哪裏是錯誤的答案?請參閱http://stackoverflow.com/questions/2664301/how-does-modulus-divison-work。 – sPaz

+0

它看起來很好! – aweis

+0

我也得到了正確的答案0 ...期望的結果是什麼,爲什麼? :) –

回答

7

你期望它返回什麼?它看起來我的權利:

>>> bigNum=46623871433466988486147975697094761425185742805822717249007 
>>> bigNum % 3 
0L 
>>> divmod(bigNum, 3) 
(15541290477822329495382658565698253808395247601940905749669L, 0L) 
>>> _[0] * 3 == bigNum 
True 

注意的數字之和是被3整除,所以bigNum也:

>>> sum(map(int, str(bigNum))) 
288 
>>> 288 % 3 
0 
+0

你和DSM都提到了數字技巧和幾乎完全相同的方法...... :) –

+0

這也讓我感到驚訝 - 但是我打敗了他15秒,因爲我沒有費心總結288的數字 - 大聲笑;-) –

+1

謝謝,這是第一次計時器錯誤,下次我會更謹慎。對我感到羞恥。我已經接受了這個答案。 – user3022431