Accélérer les multiplications d'entiers


Hervé Lehning

Les nombres complexes semblent très éloignés des questions de rentabilité du monde moderne. Pourtant, ils sont à l'origine de méthodes utilisées pour accélérer les multiplications de grands nombres entiers. Ils permettent de gagner du temps, beaucoup de temps… et donc de l'argent !

En base 10, un nombre s'écrit sous la forme d'une somme de puissances de 10. Ainsi, 307 s'écrit 7 x 1 + 0 x 10 + 3 x 102. De la même manière, dans une base N (que l'on suppose «grande»), un entier A s'écrit

A = a + b × N + c × N2 + ...

a, b, c… sont des nombres entiers compris entre 0 et N – 1. Pour multiplier deux nombres à n chiffres, en utilisant l'algorithme classique enseigné à l'école élémentaire, on effectue n2 multiplications de nombres à un chiffre, puis environ n additions (ce qui est, en pratique, «négligeable» devant les n2 multiplications précédentes). En utilisant un ordinateur, le temps de calcul est ainsi proportionnel à n2. Si vous doublez le nombre de chiffres, vous multipliez le temps de calcul par quatre. Bien entendu, ceci n'est «visible» que pour les nombres de plusieurs milliers de chiffres.

On peut cependant considérablement améliorer cette performance au moyen de la transformée de Fourier, dont la définition passe par le domaine complexe.

 

La transformation de Fourier discrète 

Un nombre A à n chiffres étant donné, on lui associe le n-uplet T(A) de nombres complexes suivant : A(1), A(ω), A(ω2)… A(ω n-1), où A(X) = a + bX + cX2 +… et

ω = cos(2π/ n) + sin(2π/ n) (voir ... Lire la suite gratuitement