Python est assez bon tout seul, mais meilleur avec gmpy
(qui fait le lien avec la bibliothèque GMP que d'autres ont mentionnée, ou alternativement avec la bibliothèque MPIR qui est un peu comme un travail [[travail en cours;-)]]). Pensez-y :
$ python -mtimeit -s'x=int("1"*9999); y=int("2"*9999)' 'x*y'
100 loops, best of 3: 6.46 msec per loop
Par exemple, en Python pur, la multiplication de deux ints de 10K chiffres prend environ 6,5 millisecondes. Et.. :
$ 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
...avec gmpy à portée de main, l'opération sera environ 20 fois plus rapide. Si vous avez des centaines plutôt que des milliers de chiffres, c'est encore plus extrême :
$ python -mtimeit -s'x=int("1"*199999); y=int("2"*199999)' 'x*y'
10 loops, best of 3: 675 msec per loop
vs
$ 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
Ainsi, avec 200 000 chiffres au lieu de 10 000, l'avantage de vitesse de GMPY est de 38 fois environ.
Si vous avez régulièrement besoin de manipuler des entiers de cette ampleur, Python + gmpy est vraiment une solution viable (bien sûr, je suis partial, puisque j'ai écrit et soigné gmpy ces dernières années exactement parce que je ♥ Python (hé, mon plaque d'immatriculation est P♥thon!-) et dans un de mes hobby (l'arithmétique combinatoire) j'ai faire ont à faire avec de tels chiffres assez souvent;-).