Exponentiation modulaire
Élevez un nombre à une puissance et ne gardez que le reste : 2 puissance 10 modulo 1000 donne 24, et 3 puissance 5 modulo 13 donne 9. Chaque valeur peut compter jusqu'à 2048 chiffres et le résultat reste exact. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Base entière
- 2
- Exposant entier non négatif
- 10
- Module entier positif m
- 1000
- Résultat
- 24
L’exponentiation modulaire répond proprement à une question : que vaut la base élevée à un exposant, réduite modulo m ? Ce reste est l’épine dorsale des démos RSA jouet, des exemples de cours Diffie–Hellman, des tâches de concours de programmation et de tout script qui doit élever de grands entiers sans dépasser les limites natives.
Ce que calcule l’exponentiation modulaire
Étant donnés des entiers base, exponent et module m, l’exponentiation modulaire renvoie le reste unique r dans l’intervalle de 0 à m moins un tel que la base à la puissance de l’exposant est congruente à r modulo m. En symboles, r ≡ base^exponent (mod m). La puissance naïve multiplie la base par elle-même exponent fois et ne réduit qu’ensuite, ce qui fait croître d’énormes intermédiaires et échoue en flottant ordinaire ou en entiers de largeur fixe.
L’exponentiation modulaire rapide réduit au contraire après chaque multiplication et élève au carré la base courante en parcourant les bits de l’exposant du moins au plus significatif, de sorte que le travail croît avec la longueur en bits de l’exposant plutôt qu’avec sa magnitude décimale. Lorsque m vaut un tout entier est congruent à zéro, donc le résultat est toujours zéro. Lorsque l’exposant est zéro le résultat est un pour toute base tant que m est supérieur à un, conformément à la convention usuelle du produit vide.
Les bases négatives sont d’abord réduites dans le système de résidus non négatifs modulo m pour que la chaîne de multiplications ne mélange jamais de restes signés. Les exposants négatifs sont rejetés car ils exigent des inverses modulaires qui peuvent ne pas exister et sont hors du périmètre de ce calculateur.
Limites, performances et cas d’emploi
L’exponentiation modulaire binaire effectue un nombre constant de multiplications modulaires par bit de l’exposant, de sorte que doubler l’exposant double approximativement le travail tandis qu’un module plus grand augmente le coût de chaque multiplication. Les enseignants s’en servent pour vérifier les calculs manuels de a^b mod m avant que les élèves rendent des preuves.
Les développeurs l’intègrent dans des tests de propriétés qui affirment que les protocoles restent dans des classes de résidus, dans des systèmes de jeux ou de classement qui plient de grands compteurs modulo un premier, et dans des pipelines de scripts qui ne doivent pas réimplémenter carré-et-multiplie dans chaque langage.
Cas d’usage
Vérifier réponses de concours et devoirs a^b mod m
Élèves et coachs peuvent vérifier les puissances modulaires sans multiplier à la main d’énormes intermédiaires ni faire confiance à une calculatrice qui perd silencieusement la précision au-delà de 2^53.
Amorcer démos crypto et tests unitaires de protocoles
Les scripts qui ont besoin d’une étape déterministe base^exp mod m pour RSA jouet, Diffie–Hellman ou assertions de classes de résidus peuvent appeler ceci au lieu d’embarquer leur propre puissance BigInt.
Plier de grands compteurs dans une plage de résidus fixe
Jeux, systèmes de classement et aides de partitionnement qui élèvent un entier puis réduisent modulo m obtiennent un reste exact sans surprises d’arrondi en flottant.
Questions fréquentes
Qu’est-ce que l’exponentiation modulaire ?
C’est calculer la base élevée à un exposant et prendre le reste modulo m, écrit base^exponent mod m. Ce calculateur renvoie ce reste non négatif comme result.
Pourquoi un exposant négatif est-il rejeté ?
Les exposants négatifs signifient des puissances réciproques et exigent des inverses modulaires, qui peuvent ne pas exister lorsque base et m ne sont pas premiers entre eux.
Comment fonctionne le calculateur d’exponentiation modulaire ?
Il utilise le carré-et-multiplie binaire sur BigInt : pour chaque bit de l’exposant il élève au carré la base courante modulo m et multiplie dans le résultat lorsque le bit est positionné.
Le calculateur d’exponentiation modulaire est-il gratuit ?
L’outil navigateur est gratuit et s’exécute en local.
Quelle taille peuvent avoir les nombres ?
La base, la puissance et le module peuvent chacun compter jusqu'à 2048 chiffres. Cela suffit pour les problèmes de concours, les devoirs et bien des démonstrations de cryptographie, avec un résultat exact et rapide.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/numth/modular-exponentiation \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base":"2","exponent":"10","modulus":"1000"}'const res = await fetch("https://api.kit.forhosting.com/numth/modular-exponentiation", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base": "2",
"exponent": "10",
"modulus": "1000"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/modular-exponentiation",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base": "2",
"exponent": "10",
"modulus": "1000"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/modular-exponentiation", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base":"2","exponent":"10","modulus":"1000"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base":"2","exponent":"10","modulus":"1000"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/modular-exponentiation", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"base": "2",
"exponent": "10",
"modulus": "1000"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.modular_exponentiation",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_digits | 2048 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Ce calculateur d’exponentiation modulaire exécute le carré-et-multiplie binaire sur BigInt pour que la réponse reste exacte, déterministe et gratuite à essayer dans votre navigateur avant d’appeler le même noyau via l’API.
Ce que calcule l’exponentiation modulaire
Le module doit être au moins un ; les modules nuls ou négatifs ne définissent pas un reste non négatif standard et renvoient invalid_input au lieu d’inventer une réponse.
Comment appeler l’API et lire le résultat
Envoyez un corps JSON avec trois champs obligatoires : base, exponent et modulus. Chacun peut être une chaîne d’entier décimal ou un nombre JSON ; la forme chaîne est préférée pour les valeurs au-delà de la plage d’entiers sûre de JavaScript. Les alias a pour base, exp ou e ou power pour exponent, et m ou mod pour modulus sont acceptés afin que formulaires et clients manuscrits partagent un même contrat. En succès la réponse renvoie base, exponent et modulus comme chaînes décimales normalisées et ajoute result comme le reste non négatif de base^exponent mod modulus. Vérifications classiques : base 2, exponent 10, modulus 1000 donne result 24 ; base 3, exponent 5, modulus 13 donne 9 ; base 7, exponent 0, modulus 5 donne 1. Une validation échouée — champs manquants, non-entiers, fractions, modulus inférieur à un, exposant négatif, ou valeur plus longue que la limite de chiffres publiée — renvoie invalid_input et n’est jamais facturée. Le tarif est un forfait $0.002 par requête réussie (unité à prix marginal nul).
Limites, performances et cas d’emploi
Cette capacité plafonne base, exponent et modulus à 2048 chiffres décimaux chacun — assez pour problèmes de concours, devoirs et de nombreuses démos à échelle crypto — tout en restant assez petit pour que le BigInt pur en Worker reste interactif sans lancer une pile multiprécision lourde. Si vous avez besoin de modules à un million de chiffres, de décompositions par le théorème chinois des restes ou de primitives crypto en temps constant, vous avez besoin d’une bibliothèque dédiée ; cet outil léger de parse est volontairement le calculateur et l’étape API partagés pour les puissances modulaires exactes. Associez-le à des outils séparés de factorisation ou d’inverse lorsqu’un flux a besoin de la boîte à outils modulaire complète ; ce endpoint ne répond qu’à la question puissance-et-réduction pour garder l’intention de recherche claire et la réponse minimale.
Questions techniques
Que se passe-t-il si le module est inférieur à 1 ?
Le module doit être au moins 1. Les modules nuls ou négatifs ne définissent pas le reste non négatif standard utilisé ici et renvoient invalid_input.