【问题标题】:python big number mod [closed]python大数mod [关闭]
【发布时间】:2013-11-22 16:25:45
【问题描述】:

我正在为 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

提前感谢您的帮助。

【问题讨论】:

  • 我也得到了正确答案 0...预期结果是什么,为什么? :)
  • 伙计们,真丢脸。这是第一次发布问题,我太快认为 python 给了我错误的答案。确实 python 给了我正确的答案。对不起,谢谢你们迅速纠正我。下次我会更谨慎的。

标签: python numbers modulus


【解决方案1】:

您希望它返回什么?在我看来是对的:

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

【讨论】:

  • 你和 DSM 都提到了数字总和技巧和几乎完全相同的方法...... :)
  • 这也让我感到惊讶——但我以 15 秒的优势击败了他,因为我也懒得把 288 的数字相加——哈哈 ;-)
  • 谢谢,这是第一次犯错,下次我会更加谨慎。真丢人。我已经接受了这个作为答案。
猜你喜欢
  • 2015-11-04
  • 2014-03-13
  • 2013-10-29
  • 2023-03-10
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 2018-12-03
  • 2013-04-22
相关资源
最近更新 更多