2011-03-28 55 views
0

在大数字上使用mod(如600851475143)没有给出正确的答案,任何人都知道为什么?python模数/模可以在大数字上工作吗?

print 600851475143/2.0 
print 600851475143 % 2.0 
print 4/2.0 
print 4 % 2.0 

600851475143/2.0 = 300425737572.0
600851475143%2.0 = 1.0
4/2.0 = 2.0
4%2.0 = 0.0

我正在创建自己的质数功能,它适用于较小的数字,但模块似乎在数字变大时破坏。我只是在与蟒蛇和欧拉挑战混在一起,现在已经把我的头撞墙了一段时间了。

谢谢。

+1

大数字以“3”结尾,任何以3模2结尾的数字都是1.所以这是正确的。你给出的第一行是不正确的,但是我不能在这里用python 3.2重现。你确定你显示了正确的值吗? – 2011-03-28 06:35:36

+0

为什么你使用2.0而不是2? – 2011-03-28 06:44:09

+0

对于以3结尾的数字,模2的结果是1,我应该已经看到了,但是当我做简单的分割时,我的python版本没有计算出余数,这导致了我的错误结论。 '打印600851475143.0/2.0'返回'300425737572.0' – 2011-03-28 06:47:16

回答

0
>>> print 600851475143/2 
300425737571 
>>> print 600851475143 % 2 
1 
>>> 4/2 
2 
>>> 4 % 2 
0 

除此之外:你的问题与大数字无关 - 它只是关于Python中的整数运算。

相关问题