J'ai besoin d'un algorithme plus rapide que la multiplication longue normale de Python.Python longue multiplication
J'ai essayé de trouver une implémentation décente de Karatsuba, mais je ne peux pas.
def main():
a=long(raw_input())
if(a<0):
a=a*-1
a=((a*(a+1)/2)-1)
print(-a)
else:
a=(a*(a+1))/2
print(a)
main()
Comme vous le voyez, ce n'est rien de compliqué, juste quelques multiplications. Mais il doit gérer des nombres allant jusqu'à 100 000 chiffres en moins de 2,5 secondes. Je voudrais un extrait d'une fonction ou juste un lien vers une implémentation d'une fonction de multiplication plus rapide, ou tout ce qui aide.
Je pense que Python utilise déjà karatsuba sous le capot (lorsqu'il est déclenché par beaucoup de chiffres) ... – ChristopheD
Python utilise déjà karatsuba pour une longue multiplication. L'impression prendra beaucoup plus de temps que la multiplication. –
Est-ce correct d'imprimer (hex (a)) '? Ce sera beaucoup plus rapide que 'print (a)' –