Outil de calcul de puissance modulaire. L'exponentiation modulaire (ou puissance modulo) est le résultat du calcul a^b modulo n. Elle est utilisée en informatique et en cryptographie.
Exponentiation Modulaire - dCode
Catégorie(s) : Arithmétique
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
L'exponentiation modulaire (aussi appelée powmod ou modpow en programmation) est le calcul d'une puissance entière suivi d'une réduction modulo un entier positif $ n $.
Mathématiquement, il s'agit de calculer $ a^b \mod n $ avec $ a $ la base, $ b $ l'exposant et $ n $ le modulo (entier strictement positif)
L'exponentiation modulaire est un outil fondamental en cryptographie moderne, notamment dans les systèmes à clé publique.
Le calcul revient à déterminer le reste de la division euclidienne de $ a^b $ par $ n $.
Une méthode directe consiste à calculer la puissance complète puis à en prendre le reste modulo $ n $.
Exemple : Calculer $ 9^{10} \mod 11 $ c'est calculer $ 9^{10} = 3486784401 $ puis $ 3486784401 \mod 11 \equiv 1 $
Cependant, cette méthode devient rapidement impraticable car les valeurs de $ a^b $ croissent exponentiellement avec $ b $.
En pratique, il est préférable de réduire modulo $ n $ à chaque étape du calcul en utilisant la propriété $ x \equiv y \mod n $, alors $ x \cdot z \equiv y \cdot z \mod n $
Cette propriété permet d'effectuer des réductions intermédiaires et d'éviter la manipulation de nombres gigantesques.
Le mot puissance indique le nom de l'opération, et le mot exposant indique l'opérande.
Calculer les $ x $ derniers chiffres d'un nombre en écriture décimale revient à effectuer un calcul modulo $ 10^x $.
Exemple : $ 3^9 = 19683 $ et $ 3^9 \mod 100 = 83 $ (les 2 derniers chiffres)
Cette propriété repose sur le fait que travailler modulo $ 10^x $ conserve exactement les $ x $ derniers chiffres en base 10.
L'algorithme le plus utilisé est l'exponentiation rapide modulaire, aussi appelée méthode square-and-multiply. Il repose sur l'écriture binaire de l'exposant $ e $.
En notant $ e=\sum_{i=0}^{m-1}a_{i}2^{i} $ sur $ m $ bits avec $ a_i $ les valeurs binaires (0 ou 1) dans l'écriture en base 2 de $ e $ (avec $ a_{m-1} = 1 $)
Alors $ b^e $ peut s'écrire $$ b^e = b^{\left( \sum_{i=0}^{n-1} a_i \cdot 2^i \right)} = \prod_{i=0}^{n-1} \left( b^{2^i} \right)^{a_i} $$
Et donc $$ b^e \mod n \equiv \prod_{i=0}^{n-1} \left( b^{2^i} \right)^{a_i} \mod n $$
Voici l'implémentation de l'exponentiation modulaire rapide en pseudocode :// pseudocode
function powmod(base b, exponent e, modulus m) {
r = 1
b = b % m
if (b == 0) return 0
while (e > 0) {
if (e % 2) r = (r * b) % m
e = e >> 1
b = (b ** 2) % m
}
return r
}
En théorie, l'algorithme d'exponentiation rapide est celui qui nécessite le moins d'étapes. Le nombre d'étapes dépend de la taille en bits de l'exposant $ b $.
Pour un calcul à la main, une méthode efficace consiste à :
— Décomposer l'exposant en puissances de 2
— Calculer successivement les carrés modulo $ n $
— Multiplier les puissances utiles (bits égaux à $ 1 $)
En pratique, pour les petites valeurs de $ a $, $ b $ et $ n $ calculer la puissance puis le modulo (avec une division euclidienne) est plus instinctif.
Ce calcul est connu sous le nom du problème du logarithme discret. Certaines solutions peuvent être trouvées par force brute mais il n'y a pas de solution générale triviale.
Les calculs utilisent des puissances et des modulos qui sont généralement définis sur l'ensemble des entiers naturels N.
Il est possible d'utiliser des nombres rationnels mais ce n'est pas géré ici.
dCode se réserve la propriété du code source pour "Exponentiation Modulaire". Tout algorithme pour "Exponentiation Modulaire", applet ou snippet ou script (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou toutes fonctions liées à "Exponentiation Modulaire" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou toute base de données, ou accès API à "Exponentiation Modulaire" ou tout autre élément ne sont pas publics (sauf licence open source explicite). Idem avec le téléchargement pour un usage hors ligne sur PC, mobile, tablette, appli iPhone ou Android.
Rappel : dCode est une ressource éducative et pédagogique, accessible en ligne gratuitement et pour tous.
Le contenu de la page "Exponentiation Modulaire" ainsi que ses résultats peuvent être copiés et réutilisés librement, y compris à des fins commerciales, à condition de mentionner dCode.fr comme source (Licence de libre diffusion Creative Commons CC-BY).
L'export des résultats est gratuit et se fait simplement en cliquant sur les icônes d'export ⤓ (format .csv ou .txt) ou ⧉ copier-coller.
Pour citer dCode.fr sur un autre site Internet, utiliser le lien :
Dans un article scientifique ou un livre, la citation bibliographique recommandée est : Exponentiation Modulaire sur dCode.fr [site web en ligne], consulté le 02/04/2026,