Einführung in Bézouts Identität
Die GCD von zwei ganzen Zahlen A, B ist die größte positive ganze Zahl, die beide teilt und keinen Rest hinterlässt. Aufgrund der Eigenschaft von Euklid kann nun jede ganze Zahl N wie folgt durch eine andere ganze Zahl M geteilt werden:
Es gibt Paare u, v, so dass wir schreiben können:
Da es unendlich viele dieser Paare gibt, möchten wir spezielle finden. Es gibt tatsächlich genau (A, B ist nicht Null) zwei solche Paare, die sich erfüllen
Herausforderung
Das Ziel dieser Herausforderung ist es, das (geordnete) Koeffizientenpaar (u, v) zu finden, das die obigen Einschränkungen erfüllt und bei dem u positiv sein muss. Dies schränkt die Ausgabe auf ein eindeutiges Paar ein.
Eingang
Wir können annehmen, dass der Eingang positiv ist, auch A wird immer größer als B sein (A> B).
Ausgabe
Die Ausgabe unseres Programms / unserer Funktion muss das in der Herausforderung angegebene (geordnete) Paar sein.
Regeln
Man darf keine eingebauten erweiterten euklidischen Algorithmen verwenden (zB darf man in Mathematica verwenden, GCD
aber nicht ExtendedGCD
- was für 5,3 sowieso fehlschlagen würde).
Die Antwort kann ein vollständiges Programm (Eingabe über STDIN oder ähnliches und Ausgabe über STDOUT) oder eine Funktion (Rückgabe des Paares) sein.
Neben dem Paar (u, v) darf keine Ausgabe erfolgen, nachgestellte Zeilenumbrüche oder Leerzeichen sind zulässig. (Klammern oder Kommas sind in Ordnung)
Dies ist Code Golf, alle Standardlücken sind verboten und das Programm mit der niedrigsten Byteanzahl gewinnt.
Beispiele
(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)