Python довольно хорош сам по себе, но лучше с gmpy
(что связывает его с библиотекой GMP, о которой упоминали другие, или, альтернативно, с MPIR, своего рода похожим на работу [[work in прогресс;-)]]). Рассмотрим:
$ python -mtimeit -s'x=int("1"*9999); y=int("2"*9999)' 'x*y'
100 loops, best of 3: 6.46 msec per loop
т. Е. В чистом Python умножение двух 10-разрядных чисел занимает 6,5 миллисекунды или около того. И ...:
$ python -mtimeit -s'from gmpy import mpz; x=mpz("1"*9999); y=mpz("2"*9999)' 'x*y'
1000 loops, best of 3: 326 usec per loop
... с gmpy под рукой операция будет примерно в 20 раз быстрее. Если у вас есть сотни, а не тысячи цифр, это еще более экстремально:
$ python -mtimeit -s'x=int("1"*199999); y=int("2"*199999)' 'x*y'
10 loops, best of 3: 675 msec per loop
против
$ python -mtimeit -s'from gmpy import mpz; x=mpz("1"*199999); y=mpz("2"*199999)' 'x*y'
100 loops, best of 3: 17.8 msec per loop
итак, с цифрой 200k вместо 10k, преимущество gmpy в скорости составляет примерно 38 раз.
Если вам обычно нужно обрабатывать целые числа этой величины, Python + gmpy действительно работоспособное решение (конечно, я предвзят, поскольку я писал и ухаживаю за gmpy в течение последних нескольких лет именно потому, что я ♥ Python (эй мой номерной знак - это P ♥ thon! -) и в одном из моих хобби (комбинаторная арифметика). Мне do приходится иметь дело с такими числами довольно часто; -.)