Inverse multiplicatif modulaire
Trouvez le nombre qui annule une multiplication modulo m : l'inverse de 3 modulo 11 est 4, car 3 fois 4 laisse le reste 1. Vous voyez aussi le pgcd et une valeur de contrôle, et un message clair quand aucun inverse n'existe. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- A
- 3
- Module m ≥ 2
- 11
- A modulo
- 3
- Inversé
- 4
- Pgcd
- 1
- Contrôle
- 1
L'inverse multiplicatif modulaire d'un entier a modulo m est le résidu x qui satisfait a fois x congruent à un modulo m. Cet inverse existe si et seulement si a et m sont premiers entre eux — leur plus grand commun diviseur vaut un. Tutoriels de cryptographie, étapes de clé privée RSA, division modulaire en programmation de concours et calculs sur groupes cycliques exigent cette opération, or de nombreux langages n'exposent qu'un GCD binaire et vous laissent les coefficients de Bézout. Cette calculatrice prend a et m, exécute l'algorithme d'Euclide étendu de façon déterministe et renvoie l'unique inverse non négatif dans l'intervalle de zéro à m moins un, avec le gcd et un produit de contrôle pour vérifier le résultat sans refaire les étapes.
Ce qu'est un inverse modulaire et quand il existe
En arithmétique ordinaire tout nombre non nul a un inverse multiplicatif : on divise par lui et on obtient un. En arithmétique modulaire la même idée devient une congruence. On dit que x est un inverse modulaire de a modulo m lorsque a fois x laisse un reste un en division par m.
Comme les résidus tournent tous les m pas, tout a n'a pas un tel x. L'obstacle est arithmétique, pas flottant : si d égale le gcd de a et m et d est supérieur à un, alors a fois tout entier est multiple de d, donc le produit ne peut jamais être congruent à un, qui n'est pas multiple de d.
Inversement, l'identité de Bézout garantit des entiers x et y avec a x plus m y égal à un exactement quand ce gcd vaut un, et réduire x modulo m donne l'inverse. Les ingénieurs rencontrent cette condition en divisant dans un corps fini, en choisissant des exposants de déchiffrement RSA qui inversent l'exposant public modulo phi de n, en annulant des multiplications modulaires dans des pipelines de hachage, ou en résolvant des congruences linéaires en programmation compétitive.
Renvoyer une erreur explicite lorsque la paire n'est pas première entre elle est plus utile qu'un échec silencieux : le client apprend qu'aucun inverse n'existe et peut brancher sur le gcd au lieu de deviner quelle bibliothèque a renvoyé un mauvais résidu.
Usage pratique, limites, tarification et livraison
Utilisez l'outil navigateur lorsque vous voulez un inverse rapide en lisant une note crypto, en vérifiant une congruence de devoir ou en déboguant une multiplication modulaire. Les entrées acceptées sont des entiers a de valeur absolue au plus un billion et des modules m de deux à un billion. Les résultats sont déterministes : la même paire donne toujours le même inverse et le même champ check.
Branchez le point de terminaison sur des bacs à sable d'enseignement RSA, des démos de corps finis, des aides de programmation de concours ou tout pipeline entier qui préfère l'arithmétique exacte aux heuristiques approximatives.
Cas d’usage
Labs crypto et enseignement de RSA
Enseignants et étudiants peuvent inverser des exposants publics modulo φ(n) à la demande et inspecter le gcd lorsqu'un module d'exemple n'est pas premier avec l'exposant.
Programmation de concours et division modulaire
Les programmeurs compétitifs peuvent remplacer des extraits ad hoc de GCD étendu par un seul appel déterministe pour vérifier la division modulaire sous modules premiers ou composés.
Questions fréquentes
Que se passe-t-il si a et m ne sont pas premiers entre eux ?
Le message inclut gcd(a, m) pour expliquer pourquoi aucun inverse multiplicatif modulaire n'existe. L'échec de validation n'est pas facturé.
Quel algorithme calcule l'inverse ?
L'algorithme d'Euclide étendu. Il trouve des coefficients de Bézout pour a mod m et m ; lorsque le gcd vaut 1, le coefficient de a est réduit dans 0..m−1.
Quelles plages de a et m sont acceptées ?
m doit être un entier de 2 à 1,000,000,000,000. a doit être un entier dont la valeur absolue est au plus cette même borne. Les valeurs hors limites sont rejetées.
Quel est l'inverse de 3 modulo 11 ?
C'est 4. En multipliant 3 par 4 puis en divisant par 11, il reste 1, ce qui est exactement la propriété d'un inverse. La valeur de contrôle affichée à côté du résultat est ce 1.
À quoi sert un inverse modulaire ?
Il permet de diviser modulo m, de résoudre des congruences linéaires et, en cryptographie, d'obtenir l'exposant de déchiffrement RSA en inversant l'exposant public modulo φ(n). Les cours et les concours de programmation en ont souvent besoin.
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-inverse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":3,"m":11}'const res = await fetch("https://api.kit.forhosting.com/numth/modular-inverse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 3,
"m": 11
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/modular-inverse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 3,
"m": 11
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/modular-inverse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":3,"m":11}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":3,"m":11}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/modular-inverse", 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
{
"a": 3,
"m": 11
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.modular_inverse",
"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_abs | 1000000000000 |
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
Comment cette calculatrice exécute l'algorithme d'Euclide étendu
Appelez la capacité avec les champs entiers a et m, où m vaut au moins deux. Les valeurs absolues sont bornées par un billion afin que tout produit intermédiaire reste dans la plage d'entiers sûrs de JavaScript. L'implémentation réduit d'abord a dans la classe de résidu non négative a_mod de zéro à m moins un, puis applique l'algorithme d'Euclide étendu à la paire a_mod et m. Chaque étape enregistre le quotient entier et met à jour les coefficients de Bézout de sorte qu'à la fin le coefficient de a_mod multiplie a_mod plus un coefficient de m égale le gcd. Si ce gcd n'est pas un, la requête échoue avec invalid_input et un message qui nomme les deux entrées et le gcd ; rien n'est facturé. Si le gcd vaut un, le coefficient de a_mod est réduit dans l'intervalle de zéro à m moins un et renvoyé comme inverse. La réponse répète aussi a, m, a_mod, gcd et check égal à a_mod fois inverse modulo m, qui doit valoir un lorsque l'appel réussit.
Usage pratique, limites, tarification et livraison
Utilisez l'API lorsqu'un script, un correcteur ou une plateforme éducative a besoin de nombreux inverses sans embarquer une routine de GCD étendu. Chaque requête réussie est un article facturable à $0.002 ; les échecs de validation et les paires non premières entre elles ne consomment pas de solde. Comme l'unité est un article unique et le moteur un parse pur, la latence reste faible et le canal web gratuit reflète l'API payante sans second chemin de code susceptible de diverger.
Cas d'intégration
Correcteurs de devoirs et pipelines de théorie des nombres
Correcteurs automatiques et scripts peuvent confirmer les inverses, détecter les entrées non coprimes via invalid_input et garder chaque produit intermédiaire dans les bornes documentées.
Questions techniques
Comment calculer un inverse modulaire avec cette API ?
Envoyez un JSON avec les champs entiers a et m (m ≥ 2) à numth.modular_inverse. En cas de succès la réponse renvoie inverse dans 0..m−1, plus a_mod, gcd et check égal à 1.
La calculatrice d'inverse modulaire est-elle gratuite ?
L'outil navigateur s'exécute gratuitement sur votre appareil. Les appels API utilisent un solde KIT prépayé à $0.002 par article réussi ; entrées invalides ou non coprimes non facturées.