Introduction à l'identité de Bézout
Le GCD de deux entiers A, B est le plus grand entier positif qui les divise tous les deux sans laisser de reste. Maintenant, à cause de la propriété d'Euclide, chaque entier N peut être divisé par un autre entier M comme suit:
il existe des paires u, v telles que nous pouvons écrire:
Puisqu'il y a une quantité infinie de ces paires, nous aimerions en trouver des spéciales. Il y a en fait exactement (A, B n'étant pas zéro) deux de ces paires qui satifient
Défi
Le but de ce défi est de trouver la paire (ordonnée) de coefficients (u, v) qui satisfait les contraintes ci-dessus et où u doit être positif. Cela réduit la sortie à une paire unique.
Contribution
On peut supposer que l'entrée est positive, aussi A sera toujours plus grand que B (A> B).
Production
La sortie de notre programme / fonction doit être la paire (ordonnée) spécifiée dans le défi.
Règles
Il ne faut pas utiliser d'algorithmes euclidiens étendus intégrés (par exemple, dans Mathematica on est autorisé à utiliser GCD
mais pas ExtendedGCD
- ce qui échouerait pour 5,3 de toute façon).
La réponse peut être un programme complet (prise d'entrée via STDIN ou similaire et sortie via STDOUT) ou une fonction (retour de la paire).
À côté de la paire (u, v), il ne doit y avoir aucune sortie, les sauts de ligne ou les espaces sont autorisés. (les crochets ou les virgules conviennent)
C'est le golf de code, toutes les failles standard sont interdites et le programme avec le nombre d'octets le plus bas gagne.
Exemples
(A, B) -> (u, v)
(42, 12) -> (1, -3)
(4096, 84) -> (4, -195)
(5, 3) -> (2, -3)
(1155, 405) -> (20, -57)
(37377, 5204) -> (4365, -31351)
(7792, 7743) -> (7585, -7633)
(38884, 2737) -> (1707, -24251)
(6839, 746) -> (561, -5143)
(41908, 7228) -> (1104, -6401)
(27998, 6461) -> (3, -13)
(23780, 177) -> (20, -2687)
(11235813, 112358) -> (8643, -864301)