python大号mod

时间:2013-11-22 16:25:46

标签: python numbers modulus

我正在为python 2.7.3中的大号做mod,而python给出了错误的答案,如下所示。如果数字很小,那么它会给出正确的答案。

任何人都可以解释为什么会发生这种情况以及我如何在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

提前感谢您的帮助。

1 个答案:

答案 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