CCalculate.Studio

% Calculateur de modulo

L'opération modulo donne le reste laissé par la division d'un nombre par un autre. Ce calculateur évalue a mod b selon la convention par plancher, dite mathématique, où le signe du résultat suit celui du diviseur, et affiche aussi le résultat par troncature, retenu par les langages de programmation, où le signe suit celui du dividende : les deux conventions coïncident sur les nombres positifs, mais divergent dès qu'une valeur négative entre en jeu.

Dernière vérification: 2026-07-07
Add as preferred on Google

Comprendre les conventions de signe

Les deux conventions donnent des résultats identiques tant que les deux nombres sont positifs, mais divergent dès qu'une valeur négative apparaît, comme l'illustre le tableau ci-dessous.

abRésultat par plancher (signe de b)Résultat par troncature (signe de a)
13533 (identique — les deux positifs)
−1352−3
13−5−23
−13−5−3−3 (identique — les deux négatifs)
  • Le modulo par plancher, retenu ici comme résultat principal, est la convention la plus répandue en mathématiques pures et en théorie des nombres ; il correspond à l'opérateur % de Python.
  • Le modulo par troncature, donné en résultat secondaire, correspond à l'opérateur % de JavaScript, C, C++, Java et de la plupart des langages de la famille C, où le signe du reste suit le dividende.
  • Le modulo par zéro n'est pas défini et n'est donc pas calculé : le diviseur doit être un nombre non nul.

Qu'est-ce que l'opération modulo ?

L'opération modulo, notée a mod b (ou a % b), renvoie le reste de la division de a par b. Ainsi, 13 mod 5 = 3, puisque 13 = 2 × 5 + 3 : diviser 13 par 5 donne un quotient de 2 et il reste 3. Le modulo est central en théorie des nombres (arithmétique modulaire, dite « de l'horloge »), en informatique (hachage, indexation cyclique, sommes de contrôle) et dans tout raisonnement courant sur les restes et les cycles, jours de la semaine ou heures de la journée.

Deux conventions largement répandues définissent le signe du résultat en présence de nombres négatifs : le modulo par plancher, dont le résultat prend toujours le signe du diviseur b, et le modulo par troncature, dont le résultat prend toujours le signe du dividende a. Toutes deux définissent valablement la notion de reste et coïncident exactement lorsque a et b sont positifs ; elles ne divergent qu'en présence d'une valeur négative.

Ce choix de convention compte en pratique, car les langages de programmation ne retiennent pas le même défaut : l'opérateur % de Python applique le modulo par plancher, tandis que JavaScript, C, C++, Java et la plupart des langages de la famille C appliquent la troncature, alignée sur le signe du dividende. Ce calculateur affiche donc explicitement les deux résultats.

Comment utiliser ce calculateur de modulo

  1. Saisissez le dividende (a), le nombre que l'on divise.
  2. Saisissez le diviseur (b), le nombre par lequel on divise. Il ne peut valoir 0, la division — et donc le modulo — par zéro n'étant pas définie.
  3. Lisez le résultat selon la convention par plancher, dont le signe suit toujours celui du diviseur : c'est la convention mathématique la plus courante en théorie des nombres.
  4. Comparez avec le résultat par troncature, dont le signe suit celui du dividende, si vous devez reproduire l'opérateur % d'un langage donné, et consultez le quotient ainsi que l'équation de division complète pour le détail du calcul.

Les formules du modulo par plancher et par troncature

Plancher : q = ⌊a ÷ b⌋, r = a − b × q (le signe de r suit le diviseur b)
Troncature : q = trunc(a ÷ b), r = a − b × q (le signe de r suit le dividende a)
Exemple : 13 mod 5 = 3 (les deux conventions concordent)
Exemple : −13 mod 5 → plancher = 2, troncature = −3 (les conventions divergent)

Le modulo par plancher définit le quotient comme q = ⌊a ÷ b⌋, arrondi vers le bas, c'est-à-dire vers moins l'infini, puis pose r = a − b×q. Le reste r porte alors toujours le signe du diviseur b, ou vaut 0, et vérifie 0 ≤ r < |b| lorsque b > 0. Exemple traité pour 13 mod 5 : q = ⌊13/5⌋ = 2, d'où r = 13 − 5×2 = 3.

Exemple traité avec un dividende négatif, −13 mod 5 par plancher : q = ⌊−13/5⌋ = ⌊−2,6⌋ = −3, d'où r = −13 − 5×(−3) = −13 + 15 = 2. Notez que le résultat est positif, comme le diviseur, ce qui le distingue du résultat par troncature ci-dessous.

Le modulo par troncature arrondit le quotient vers zéro plutôt que vers moins l'infini, puis calcule le reste de la même manière ; celui-ci porte donc toujours le signe du dividende a, ou vaut 0. Exemple traité, −13 mod 5 par troncature, soit le résultat de % en JavaScript, C ou Java : le quotient arrondit −2,6 vers zéro, donnant −2, d'où r = −13 − 5×(−2) = −13 + 10 = −3 — négatif comme le dividende, tandis que le plancher donnait +2 pour les mêmes données.

Erreurs fréquentes

  • Supposer que tous les langages calculent a mod b de la même façon sur les négatifs : JavaScript, C, C++ et Java tronquent, tandis que Python et de nombreux ouvrages de mathématiques appliquent le plancher, d'où des résultats différents dès que a est négatif.
  • Oublier que le résultat par plancher partage le signe du diviseur, et non celui du dividende — exactement l'inverse de la convention par troncature, de style JavaScript.
  • Chercher à calculer a mod 0 : comme la division, l'opération modulo n'est pas définie lorsque le diviseur est nul.
  • Saisir des valeurs non entières en attendant les propriétés de l'arithmétique modulaire des entiers : ce calculateur accepte les réels et leur applique la même logique de plancher ou de troncature, mais beaucoup de propriétés classiques, dont l'arithmétique de l'horloge, ne se définissent que sur les entiers.

Questions fréquentes

Quelle différence entre modulo par plancher et par troncature ?

Le modulo par plancher arrondit le quotient vers moins l'infini, si bien que le reste porte toujours le signe du diviseur. Le modulo par troncature arrondit le quotient vers zéro, si bien que le reste porte toujours le signe du dividende. Les deux concordent sur les nombres positifs mais divergent dès qu'une valeur est négative : −13 mod 5 vaut ainsi 2 par plancher et −3 par troncature.

Pourquoi −13 mod 5 donne-t-il des réponses différentes selon les calculateurs ?

Tout dépend de la convention de signe. Le plancher donne 2, résultat aligné sur le diviseur positif et vérifiant 0 ≤ r < 5. La troncature donne −3, résultat aligné sur le dividende négatif. L'opérateur % de Python renvoie 2, ceux de JavaScript, de C et de Java renvoient −3. Aucune convention n'est plus juste que l'autre : ce sont deux définitions mathématiques distinctes et également valables.

Comment calculer a mod b à la main ?

Divisez a par b pour obtenir le quotient, arrondissez-le selon la convention choisie — vers le bas pour le plancher, vers zéro pour la troncature —, puis retranchez de a le produit de b par ce quotient arrondi : reste = a − b × quotient. Pour 13 mod 5 : 13 ÷ 5 = 2,6, le quotient arrondi vaut 2 dans les deux conventions, d'où reste = 13 − 5×2 = 3.

Que signifie mod en arithmétique modulaire et en arithmétique de l'horloge ?

L'arithmétique modulaire fait « boucler » les nombres une fois le module atteint ; l'exemple canonique est l'horloge à 12 heures, où l'on compte modulo 12 (ou modulo 24 en notation sur 24 heures). Ainsi, 15 h en notation sur 24 heures correspond à 15 mod 12 = 3 sur un cadran de 12 heures. Le modulo est précisément l'opération qui produit ce reste « rebouclé ».

Peut-on prendre le modulo d'un diviseur négatif ?

Oui. Sous la convention par plancher, a mod b avec b négatif donne un reste du signe de b : 13 mod −5 = −2, puisque 13 = (−3)×(−5) + (−2). Sous la convention par troncature, le reste suit en revanche le signe du dividende : 13 mod −5 = 3, car le quotient arrondi vers zéro vaut −2, d'où 13 − (−5)×(−2) = 13 − 10 = 3.

Références

  1. Rosen KH. Elementary Number Theory and Its Applications. 6th ed. Pearson, 2010. (Division algorithm and modular arithmetic.)
  2. Leijen D. Division and Modulus for Computer Scientists. Utrecht University Technical Report UU-CS-2001-20, 2001. (Formal comparison of flooring, truncating and Euclidean division conventions.)
  3. ECMA International. ECMA-262: ECMAScript Language Specification — the remainder operator (%). ecma-international.org.

Théorie des nombres · Tous les calculateurs

Calculateurs associés