Calculateur d’ordre multiplicatif modulo n
Le calculateur d’ordre multiplicatif détermine le plus petit exposant positif k pour lequel a élevé à la puissance k est congru à 1 modulo n.
Lancer gratuitement
Saisissez une base entière a et un module n : le résultat indique la base réduite, l’indicatrice d’Euler, l’ordre et une vérification modulaire directe. Le calcul n’est défini que si a et n sont premiers entre eux ; une paire non valide produit donc un message d’erreur clair plutôt qu’un nombre trompeur. Cet outil convient aux exercices d’arithmétique modulaire, à l’étude des sous-groupes cycliques, aux motifs périodiques et à la théorie élémentaire des nombres.
Comprendre l’ordre multiplicatif
Pour deux entiers a et n, l’ordre multiplicatif de a modulo n est le plus petit entier positif k tel que a<sup>k</sup> laisse un reste égal à 1 lors de la division par n. La précision « plus petit positif » est essentielle : des exposants ultérieurs peuvent eux aussi donner 1, mais l’ordre désigne le premier retour à l’élément neutre de la multiplication modulaire. Ainsi, les puissances de 2 modulo 9 donnent successivement les restes 2, 4, 8, 7, 5, puis 1 ; l’ordre vaut donc 6. Cette notion décrit la taille du sous-groupe cyclique engendré par a parmi les classes inversibles modulo n. Avant tout calcul, l’outil ramène a à son représentant non négatif usuel. Les bases négatives ou supérieures à n sont ainsi traitées de manière cohérente. Il fournit également une valeur de contrôle calculée à partir de l’ordre annoncé. Une valeur égale à 1 confirme la congruence recherchée, tandis que la réduction du candidat garantit qu’aucun diviseur propre restant de l’exposant ne peut encore la vérifier.
Pourquoi les deux entiers doivent être premiers entre eux
L’ordre multiplicatif modulo n n’existe que lorsque gcd(a, n) vaut 1. Il ne s’agit pas d’une simple convention de saisie. Un élément doit posséder un inverse multiplicatif modulo n pour que ses puissances appartiennent au groupe fini des unités et puissent revenir à 1. Si a et n ont un facteur commun, toute puissance positive de a conserve une obstruction de divisibilité compatible et ne peut pas être congrue à 1 modulo n. Le calculateur vérifie immédiatement cette condition et affiche le plus grand commun diviseur effectif lorsqu’elle n’est pas satisfaite. Le module doit également être au moins égal à 2, car le problème usuel de l’ordre se pose dans un système de résidus non trivial. La base peut être nulle, négative ou positive dans la limite publiée ; toutefois, zéro échoue pour tout module autorisé puisqu’il n’est jamais premier avec n. Pour préparer la saisie, utilisez des entiers exacts et non des décimaux ou des approximations scientifiques. Vous préservez ainsi l’arithmétique discrète dont dépendent le pgcd, la factorisation et les puissances modulaires.
Comment le plus petit exposant est déterminé
Le calculateur ne parcourt pas tous les exposants l’un après l’autre. Il factorise d’abord n autant que nécessaire pour calculer l’indicatrice d’Euler phi(n). Le théorème d’Euler garantit que a élevé à phi(n) est congru à 1 dès que gcd(a, n) vaut 1 ; l’ordre recherché divise donc nécessairement phi(n). L’algorithme factorise ensuite phi(n), puis vérifie de façon répétée si la division du candidat courant par l’un de ses facteurs premiers donne encore une puissance modulaire égale à 1. Dans ce cas, le candidat réduit remplace le précédent. Dès qu’aucun facteur premier ne peut plus être retiré, le candidat restant est l’ordre multiplicatif. L’exponentiation modulaire repose sur les carrés successifs et maintient les valeurs intermédiaires réduites modulo n ; tous les calculs entiers restent exacts. Cette méthode est nettement plus rapide qu’un examen de chaque exposant positif, surtout lorsque l’ordre est élevé. Les entrées sont plafonnées à mille milliards afin que la division d’essai conserve une limite déterministe claire, adaptée aussi bien à l’outil dans le navigateur qu’aux appels API automatisés.
Cas d’usage
Vérifier un exercice de théorie des nombres
Confirmez le plus petit exposant, l’indicatrice d’Euler, le reste réduit et la congruence finale sans dresser manuellement une longue liste de puissances.
Étudier des sous-groupes cycliques
Mesurez le sous-groupe engendré par une classe inversible et comparez son ordre à phi(n) lors de l’étude des racines primitives.
Analyser des motifs modulaires périodiques
Déterminez la période exacte d’une multiplication répétée modulo n dans des calculs de récurrence, de divisibilité ou de cryptographie élémentaire.
Questions fréquentes
Que représente l’ordre multiplicatif obtenu ?
Il s’agit du plus petit entier positif k pour lequel a^k est congru à 1 modulo n.
Pourquoi a et n doivent-ils être premiers entre eux ?
Seules les classes vérifiant gcd(a, n) égal à 1 sont inversibles modulo n et peuvent avoir un ordre multiplicatif.
La base a peut-elle être négative ?
Oui. Le calculateur ramène a à son représentant non négatif modulo n avant de déterminer l’ordre.
L’ordre est-il toujours égal à l’indicatrice d’Euler phi(n) ?
Non. Pour une entrée valide, l’ordre divise toujours phi(n), mais il ne lui est égal que si a engendre tout le groupe des unités modulo n.
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. Le même calcul déterministe est accessible gratuitement dans le navigateur.
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/multiplicative-order \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":2,"n":9}'const res = await fetch("https://api.kit.forhosting.com/numth/multiplicative-order", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 2,
"n": 9
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/multiplicative-order",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 2,
"n": 9
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/multiplicative-order", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":2,"n":9}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":2,"n":9}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/multiplicative-order", 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": 2,
"n": 9
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.multiplicative_order",
"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. |