Ce qui est le moyen le plus efficace donné à soulever un entier à la puissance d’un autre entier en C ?
Réponses
Trop de publicités?Notez que l'exponentiation par la quadrature n'est pas la meilleure méthode. Il est probablement le meilleur que vous pouvez faire en tant que méthode générale qui fonctionne pour toutes les valeurs d'exposant, mais pour une valeur d'exposant il y a peut être une meilleure séquence qui a besoin de moins de multiplications.
Par exemple, si vous voulez calculer x^15, la méthode d'exponentiation par la quadrature vous donnera:
x^15 = (x^7)*(x^7)*x
x^7 = (x^3)*(x^3)*x
x^3 = x*x*x
C'est un total de 6 multiplications.
Il s'avère que cela peut être fait en utilisant le "juste" 5 multiplications.
n*n = n^2
n^2*n = n^3
n^3*n^3 = n^6
n^6*n^6 = n^12
n^12*n^3 = n^15
Je ne me souviens pas de la source, mais je me souviens vaguement qu'il n'existe pas d'algorithmes efficaces pour trouver cette séquence optimale des multiplications.
Exponentiation par quadrature peut être utile de jeter un coup d’oeil à.