Résolveur du théorème des restes chinois
Résolvez des congruences simultanées en une fois : x ≡ 2 mod 3, x ≡ 3 mod 5 et x ≡ 2 mod 7 donnent x ≡ 23 mod 105. Les modules ayant des facteurs communs sont acceptés et un système contradictoire est signalé. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Restes
- 2, 3, 2
- Modules
- 3, 5, 7
- X
- 23
- Module
- 105
- Produit
- 105
- Quantité
- 3
Le parcours est de l'arithmétique entière pure : sans réseau, sans aléatoire, et sans horloge.
Ce que dit le théorème des restes chinois
Un système de congruences cherche un seul nombre x qui laisse un reste précis quand on le divise par plusieurs diviseurs, appelés modules. Lorsque les modules sont premiers entre eux deux à deux, c’est-à-dire qu’aucune paire ne partage de facteur, il existe exactement une réponse entre zéro et le produit des modules moins un, et les autres se répètent par sauts de ce produit. L’exemple classique x ≡ 2 mod 3, x ≡ 3 mod 5, x ≡ 2 mod 7 a pour unique classe 23 modulo 105.
Comment travaille le résolveur et les erreurs fréquentes
Le résolveur combine les congruences une par une, en intégrant chaque nouvelle à la réponse obtenue jusque-là. Si deux modules partagent un facteur, il vérifie d’abord que leurs restes concordent modulo leur plus grand commun diviseur ; sinon, il vous signale qu’il n’y a pas de solution. S’ils concordent, la réponse se répète à chaque plus petit commun multiple des modules, et non à chaque produit. Les erreurs typiques consistent à attendre une réponse unique modulo le produit quand les modules ont des facteurs communs, à saisir restes et modules dans un ordre ou un nombre différents, et à oublier qu’un reste négatif est simplement réduit modulo son propre diviseur.
Où les systèmes CRT apparaissent dans l'étude, l'intuition cryptographique et le code
Les enseignants peuvent générer des corrigés pour des fiches d'exercices de congruences simultanées sans faire confiance à des calculatrices opaques qui cachent les PGCD intermédiaires. Les développeurs utilisent le même contrat pour valider des reconstructions modulaires dans des démonstrations pédagogiques de RSA, pour construire des vecteurs de test déterministes pour des bibliothèques d'arithmétique modulaire, et pour vérifier qu'un pipeline de résidus se relève toujours à une seule classe après un changement de schéma.
La pratique en concours a souvent besoin d'un résolveur rapide et hors ligne afin que le travail manuscrit puisse être vérifié en quelques secondes. Associez cette page à un vérificateur de nombres premiers entre eux lorsque vous n'avez besoin que du PGCD de deux entiers, et à la factorisation en nombres premiers lorsque vous avez besoin des puissances premières derrière un seul module plutôt qu'un système simultané.
Cas d’usage
Congruences simultanées pour devoirs et concours
Résolvez des systèmes de manuel tels que x ≡ 2 mod 3, x ≡ 3 mod 5, x ≡ 2 mod 7 et vérifiez la classe unique modulo le produit des modules.
Questions fréquentes
Combien coûte le résolveur du théorème des restes chinois ?
Il est gratuit dans votre navigateur sur cette page.
Les modules doivent-ils être premiers entre eux deux à deux ?
Non. Des modules premiers entre eux deux à deux donnent toujours une solution unique modulo leur produit. Des modules non premiers entre eux sont acceptés lorsque les restes s'accordent modulo chaque PGCD ; sinon le système est rejeté comme incohérent.
L'algorithme est-il aléatoire ?
Non. Il utilise un CRT successif déterministe avec des PGCD entiers exacts et des inverses modulaires. Les mêmes restes et modules produisent toujours le même x et le même module.
Comment résoudre x ≡ 2 mod 3, x ≡ 3 mod 5 et x ≡ 2 mod 7 ?
Saisissez les restes 2, 3 et 2 et les modules 3, 5 et 7 dans le même ordre. La réponse est 23, et tout nombre qui diffère de 23 d’un multiple de 105 convient aussi.
Que se passe-t-il si les congruences se contredisent ?
Le résolveur vous indique que le système est incohérent au lieu d’inventer une réponse. Une solution n’existe que si chaque paire de restes concorde modulo le plus grand commun diviseur de leurs deux modules.
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/chinese-remainder \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"remainders":[2,3,2],"moduli":[3,5,7]}'const res = await fetch("https://api.kit.forhosting.com/numth/chinese-remainder", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"remainders": [
2,
3,
2
],
"moduli": [
3,
5,
7
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/chinese-remainder",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"remainders": [
2,
3,
2
],
"moduli": [
3,
5,
7
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/chinese-remainder", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"remainders":[2,3,2],"moduli":[3,5,7]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"remainders":[2,3,2],"moduli":[3,5,7]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/chinese-remainder", 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
{
"remainders": [
2,
3,
2
],
"moduli": [
3,
5,
7
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.chinese_remainder",
"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.
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
Le résolveur du théorème des restes chinois prend un système de congruences simultanées — x congru à chaque reste a_i modulo chaque module n_i — et renvoie la solution unique lorsqu'elle existe. Vous fournissez des tableaux parallèles de restes et de modules ; le moteur les fusionne avec un CRT successif, vérifie la cohérence lorsque les modules partagent des facteurs, et indique à la fois le représentant x entre zéro et module moins un et le module de la classe de solution (le produit des n_i lorsqu'ils sont premiers entre eux deux à deux, sinon leur plus petit commun multiple).
Ce que renvoie le théorème des restes chinois et quand les systèmes échouent
Le célèbre triplet de classe — x ≡ 2 mod 3, x ≡ 3 mod 5, x ≡ 2 mod 7 — donne x ≡ 23 mod 105. Cet outil accepte aussi la forme générale : les modules n'ont pas besoin d'être premiers entre eux deux à deux. Classiquement, si les modules sont premiers entre eux deux à deux, il existe exactement une classe de résidu modulo le produit des n_i qui satisfait toutes les congruences à la fois. Dans ce cas, une solution existe si et seulement si chaque paire de restes s'accorde modulo le PGCD des modules correspondants, et la solution est unique modulo le plus petit commun multiple de tous les n_i. Lorsque les restes ne s'accordent pas, la requête échoue avec invalid_input et un message qui nomme l'incohérence plutôt que d'inventer un faux x. La réponse JSON en cas de succès inclut x, modulus (le module CRT de la classe de solution), product (le produit brut des modules d'entrée), les remainders réduits entre zéro et n_i moins un, une copie des moduli, et count. Cette forme est stable pour les tests de référence, les clients SDK, et les widgets de navigateur qui affichent la réponse à côté d'une liste de vérification. Des tableaux manquants, des longueurs inégales, des modules non positifs, des non-entiers, et des valeurs hors de la plage d'entiers sûrs échouent aussi avec invalid_input, afin que de mauvaises cellules de tableur ne deviennent jamais silencieusement de mauvaises réponses.
Comment les restes et les modules sont lus et comment le CRT successif reste exact
Chaque module doit être un entier sûr positif. Les restes peuvent être négatifs et sont réduits dans l'intervalle canonique avant la fusion. En interne, le moteur commence à partir de la première congruence et fusionne répétitivement la suivante : étant donné x ≡ x0 mod m et x ≡ a mod n, il calcule g égale le PGCD de m et n, rejette le système si a moins x0 n'est pas divisible par g, puis construit la solution mise à jour avec un inverse modulaire de m sur g modulo n sur g et multiplie le module par n sur g pour obtenir le nouveau PPCM. Toutes les multiplications sont protégées afin que le produit et le module CRT intermédiaire restent dans les entiers sûrs de JavaScript ; les produits surdimensionnés échouent clairement plutôt que de déborder. Les champs préférés sont remainders et moduli comme tableaux JSON d'entiers de longueur égale. Les alias a, ai, et residues correspondent à remainders ; n, ni, et mods correspondent à moduli, afin que formulaires, chaînes de requête, et notebooks hérités puissent réutiliser un même contrat. Chaque entrée peut être un entier JSON ou une chaîne décimale avec un signe initial optionnel ; les fractions, la notation scientifique, et les espaces internes sont rejetés.
Où les systèmes CRT apparaissent dans l'étude, l'intuition cryptographique et le code
Sur cette page, le travail s'exécute entièrement dans votre navigateur ; via l'API, chaque résolution réussie coûte $0.002, la validation échouée n'est pas facturée, et rien n'est stocké après le retour de la réponse.
Cas d'intégration
Reconstruction modulaire dans les démonstrations pédagogiques
Relevez des listes de résidus à une seule classe entière lorsque vous expliquez des isomorphismes d'anneaux, des puzzles de calendrier, ou des étapes CRT pédagogiques de style RSA.
Fixtures de test déterministes pour bibliothèques modulaires
Générez des solutions CRT reproductibles pour les tests unitaires et les assertions de CI sans intégrer de tables calculées à la main qui dérivent de l'implémentation.
Questions techniques
Que se passe-t-il si le système est incohérent ?
La requête échoue avec invalid_input et un message indiquant qu'aucun entier x ne satisfait le système complet car les restes ne s'accordent pas modulo le PGCD des modules.
Les restes négatifs sont-ils autorisés ?
Oui. Les restes peuvent être négatifs ; ils sont réduits dans la plage zéro à n_i moins un avant la fusion CRT. Les modules doivent être des entiers positifs.