Quel est le nombre minimal de multiplications pour calculer xn dans chaque cas suivant :
n |
15 |
16 |
23 |
33 |
53 |
min(n) |
5 |
4 |
6 |
6 |
8 |
Explications
(Inspiré de Donald Knuth The Art of Computer Programming)Il y a deux méthodes classiques (on suppose quon peut garder en mémoire les résultats intermédiaires obtenus et donc les réutiliser sans les recalculer).
La méthode binaire :
Ecrivez n en base 2, puis remplacez dans lécriture trouvée chaque 1 par SX, chaque 0 par S. Supprimez le SX qui apparaît à gauche.
Interprétez lécriture obtenue comme le moyen de calculer x n : S désigne la mise au carré et X la multiplication par x.
Par exemple 15 = 1111 en binaire donne SXSXSXSX ce qui sinterprète (à condition de commencer par la droite) comme :
x 15 = X(S(X(S(X(S(x)))))) soit x * (x * (x * x 2 ) 2 ) 2
Donc pour 15, la méthode binaire nécessite 6 multiplications b(15) = 6.
Remarque : avec cette méthode, on na besoin de mettre en mémoire que x et le résultat courant.
La méthode de factorisation
Elle consiste à utiliser une factorisation de n : n = p q où p est le plus petit facteur premier de n et q > 1. On calcule dabord x p quon élève ensuite à la puissance q.
Par exemple, pour x 15 on calcule x 3 en deux multiplications, puis on élève x 3 à la puissance 5 en trois multiplications, y 5 = y * (y 2 ) 2
Donc, par la méthode de factorisation, on calcule x 15 en 5 multiplications : f(15) = 5.
Les exemples proposés