Équation de Pell
Le solveur d’équation de Pell détermine la solution fondamentale de x² − Dy² = 1 pour un entier positif D qui n’est pas un carré parfait.
Lancer gratuitement
Saisissez D afin d’obtenir le plus petit couple d’entiers positifs x et y vérifiant l’équation. Le calcul repose sur une arithmétique entière exacte : même les réponses dépassant la plage numérique ordinaire de JavaScript restent donc précises. Cet outil convient aux exercices de théorie des nombres, à l’étude des fractions continues, aux tests d’algorithmes et aux logiciels exigeant une solution de Pell canonique fiable.
Comprendre la solution fondamentale
Pour un entier positif D fixé qui n’est pas un carré, l’équation de Pell recherche les valeurs entières satisfaisant x² − Dy² = 1. Il existe une infinité de solutions positives, mais elles sont toutes engendrées par un unique couple non trivial minimal. Ce calculateur renvoie ce couple, appelé solution fondamentale : x et y sont positifs, l’identité est vérifiée exactement et aucun x positif inférieur ne résout la même équation. Ainsi, D = 2 donne x = 3 et y = 2, car 3² − 2 × 2² vaut 1. L’entrée doit être un entier compris entre 2 et 10,000,000. Un carré parfait est refusé, puisque x² − Dy² se factorise sous la forme (x − √D y)(x + √D y) et qu’il n’existe alors aucune solution positive avec y supérieur à zéro. Les résultats sont fournis sous forme de chaînes décimales plutôt que de valeurs en virgule flottante. Chaque chiffre reste ainsi intact lorsque la solution fondamentale atteint une taille surprenante, ce qui arrive pour des valeurs de D assez modestes. Vous pouvez copier la réponse dans un logiciel de calcul formel ou une bibliothèque en précision arbitraire sans arrondi préalable.
Trouver la réponse grâce aux fractions continues
L’algorithme développe √D en fraction continue simple périodique. Ses réduites donnent des approximations rationnelles p/q de plus en plus précises de √D, jusqu’à ce que le numérateur et le dénominateur de l’une d’elles vérifient p² − Dq² = 1. Le solveur actualise l’état de la fraction continue et les deux récurrences des réduites au moyen d’opérations entières déterministes. Après chaque étape, il teste l’identité de Pell avec l’arithmétique BigInt et renvoie aussitôt la première solution positive. Cette première réduite valide constitue la solution fondamentale : l’outil n’a donc ni à parcourir des couples d’entiers arbitraires ni à deviner une borne pour x et y. Le nombre d’itérations indique combien de réduites ont été testées, partie entière initiale de √D comprise. Cette donnée permet de comparer les longueurs de période ou d’étudier les performances, sans modifier le résultat mathématique. Le contrôle final de l’identité ne fait appel à aucune approximation numérique. La racine carrée ordinaire sert uniquement à obtenir la partie entière exacte du D borné ; toutes les grandes valeurs potentielles et toutes les égalités restent exactes.
Utiliser et contrôler les valeurs renvoyées
Envoyez un objet contenant le champ d, par exemple {"d": 13}. L’alias D en majuscule est également accepté pour les formules reprises de la notation habituelle. Une réponse valide contient d, x, y et iterations. Dans votre application, traitez x et y comme des chaînes d’entiers décimaux : les langages disposant d’entiers en précision arbitraire peuvent les convertir directement, tandis que les systèmes limités aux nombres de largeur fixe doivent conserver les chaînes ou employer une bibliothèque de grands entiers. Pour vérifier le résultat indépendamment, élevez x au carré, soustrayez D multiplié par le carré de y et confirmez que le résultat vaut exactement un. Effectuez ce contrôle en arithmétique entière, jamais en virgule flottante. Les types incorrects, fractions, valeurs hors limites et carrés parfaits produisent une erreur d’entrée non valide plutôt qu’un résultat trompeur. Le solveur n’utilise ni réseau, ni hasard, ni état mémorisé, ni date actuelle : un même D fournit toujours la même réponse. Le navigateur convient aux calculs ponctuels ; l’API coûte $0.002 par requête pour une intégration à un script, un service pédagogique ou une suite de tests.
Cas d’usage
Vérifiez des exercices de théorie des nombres
Calculez la solution canonique minimale, puis confrontez un développement manuel en fraction continue aux valeurs exactes de x et y.
Créez des jeux de tests déterministes
Produisez des solutions de Pell exactes pour valider une arithmétique en précision arbitraire, des récurrences ou des routines de calcul formel.
Étudiez les périodes des fractions continues
Comparez le nombre d’itérations et la taille des solutions pour plusieurs valeurs non carrées de D.
Questions fréquentes
Que renvoie le solveur ?
Il renvoie d, la solution positive fondamentale x et y sous forme de chaînes décimales exactes, ainsi que le nombre de réduites testées.
Pourquoi x et y sont-ils des chaînes ?
Les solutions de Pell peuvent dépasser la plage des entiers sûrs des environnements JSON courants. Les chaînes décimales évitent tout arrondi.
Pourquoi un D carré parfait est-il refusé ?
Lorsque D est carré, aucune solution de Pell non triviale avec y positif n’existe ; il n’y a donc pas de solution positive fondamentale.
Quelle plage d’entrée est acceptée ?
D doit être un entier non carré compris entre 2 et 10,000,000.
Quel est le prix d’un appel API ?
Chaque requête API coûte $0.002. Vous pouvez aussi exécuter gratuitement cette capacité dans votre 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/pell-equation-solver \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"d":61}'const res = await fetch("https://api.kit.forhosting.com/numth/pell-equation-solver", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"d": 61
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/pell-equation-solver",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"d": 61
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/pell-equation-solver", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"d":61}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"d":61}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/pell-equation-solver", 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
{
"d": 61
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.pell_equation_solver",
"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_d | 10000000 |
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. |