Python 3 is not "rounding big integers". What it does is that it will return a float after division. Hence, in Python 2:
>>> 4/2
2
while in Python 3:
>>> 4/2
2.0
The reason for this is simple. In Python 2, /
being integer division when you use integers have some surprising results:
>>> 5/2
2
Ooops. In Python 3 this is fixed:
>>> 5/2
2.5
This means that in Python 3, your division returns a float:
>>> 6366805760909027985741435139224001/7
9.095436801298612e+32
This float has less accuracy than the digits you need.
You then convert this to an integer with int()
, and you get a number you don't expect.
You should instead use integer division (in both Python 2 and Python 3):
>>> 6366805760909027985741435139224001//7
909543680129861140820205019889143L
(The trailing L means it's a long integer, in Python 3 the long and the normal integer is merged, so there is no trailing L).