Bonjour, sur Wikipédia, on peut lire :
Une seconde méthode pour calculer l'exponentiation modulaire requiert plus d'opérations que la première méthode. En raison de l'exigence moindre de mémoire requise, les opérations prennent pourtant moins de temps que précédemment. Il en résulte que cet algorithme peut se montrer plus rapide :
* soit par de moindres échanges entre cache (antémémoire) et mémoire
* soit par une moindre utilisation du swapping dans le cas de mémoire virtuelle
Cet algorithme utilise le fait que, pour deux entiers donnés a et b, les premières relations impliquent la suivante :
//Ca veut dire quoi cela? que b' est égale à la valeur de b modulo m ?
L'algorithme suivant :
1. Fixer c = 1, e' = 0.
2. Augmenter e' par 1.
3. Fixer c
4. Si e' < e, aller à l'étape 2. Sinon, c contient la solution correcte de
Notez qu'à chaque passage de l'étape 3, l'équation cdevient vraie. Lorsque l'étape 3 a été exécutée e fois, alors, c contient la réponse qui était cherchée.
Reprenons l'exemple b = 4, e = 13, et m = 497. L'algorithme passe par l'étape 3 treize fois :
* e' = 1. c = (1 × 4) (497) = 4 (497) = 4.
* e' = 2. c = (4 × 4) (497) = 16 (497) = 16.
* e' = 3. c = (16 × 4) (497) = 64 (497) = 64.
* e' = 4. c = (64 × 4) (497) = 256 (497) = 256.
* e' = 5. c = (256 × 4) (497) = 1024 (497) = 30.
* e' = 6. c = (30 × 4) (497) = 120 (497) = 120.
* e' = 7. c = (120 × 4) (497) = 480 (497) = 480.
* e' = 8. c = (480 × 4) (497) = 1920 (497) = 429.
* e' = 9. c = (429 × 4) (497) = 1716 (497) = 225.
* e' = 10. c = (225 × 4) (497) = 900 (497) = 403.
* e' = 11. c = (403 × 4) (497) = 1612 (497) = 121.
* e' = 12. c = (121 × 4) (497) = 484 (497) = 484.
* e' = 13. c = (484 × 4) (497) = 1936 (497) = 445.
La réponse finale pour c est par conséquent 445, comme dans la première méthode.
Je comprends pas trop pq cette algorithme marche, enfin pq on peu faire comme ca la décomposition .
Si quelqu'un peut m'expliquer un peut mieux se serait cool.
Merci d'avance.
-----