Почему python не обрабатывает очень большие числа во всех областях?

Я решаю головоломку, в которой мне нужно иметь дело с числами порядка 10 ^ 18. Однако я считаю, что python не может обрабатывать очень большие числа во всех областях.

Чтобы быть конкретным, если мы присваиваем a = 1000000000000000000 (10 ^ 18) и выполняем основные арифметические вычисления (+, -, /, *), он отвечает. Однако он показывает OverflowError, когда я использую его в range ()

>>> a = 1000000000000000000
>>> a/2
500000000000000000L
>>> a*2
2000000000000000000L
>>> a+a
2000000000000000000L
>>> a*a
1000000000000000000000000000000000000L
>>> range(a)

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    range(a)
OverflowError: range() result has too many items
>>> xrange(a)

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    xrange(a)
OverflowError: Python int too large to convert to C long

. Я использовал Python 2.7.

  1. Как я могу справиться с такими случаями? Как лучше всего решать головоломки с такими числами. (Хотелось бы получить ссылку на учебник / книгу)
  2. Почему Python не может обрабатывать это в range () / xrange ()

Я хотел бы сделать это в python 2.7, используя встроенные функции. Разве это невозможно?

5
задан Surya 23 January 2012 в 13:05
поделиться