Cornacchiasův algoritmus - Cornacchias algorithm - Wikipedia
v výpočetní teorie čísel, Cornacchiaův algoritmus je algoritmus pro řešení Diophantine rovnice , kde a d a m jsou coprime. Algoritmus popsal v roce 1908 Giuseppe Cornacchia.[1]
Algoritmus
Nejprve najděte jakékoli řešení (možná pomocí uvedeného algoritmu tady ); pokud žádný takový není existují, nemůže existovat primitivní řešení původní rovnice. Bez ztráty všeobecnosti to můžeme předpokládat r0 ≤ m/2 (pokud ne, pak vyměňte r0 s m - r0, který bude i nadále kořenem -d). Poté použijte Euklidovský algoritmus najít , a tak dále; zastavit, když . Li je celé číslo, pak řešení je ; jinak zkuste jiný kořen -d dokud není nalezeno řešení nebo nejsou vyčerpány všechny kořeny. V tomto případě neexistuje primitivní řešení.
Najít neprimitivní řešení (X, y) kde gcd (X, y) = G ≠ 1, všimněte si, že existence takového řešení z toho vyplývá G2 rozděluje m (a ekvivalentně, že pokud m je bez čtverce, pak jsou všechna řešení primitivní). Výše uvedený algoritmus lze tedy použít k hledání primitivního řešení (u, proti) na u2 + dv2 = m/G2. Pokud se takové řešení najde, pak (gu, gv) bude řešením původní rovnice.
Příklad
Vyřešte rovnici . Druhá odmocnina −6 (mod 103) je 32 a 103 ≡ 7 (mod 32); od té doby a existuje řešení X = 7, y = 3.
Reference
- ^ Cornacchia, G. (1908). „Su di un metodo per la risoluzione in numeri interi dell 'equazione ". Giornale di Matematiche di Battaglini. 46: 33–90.
externí odkazy
- Basilla, J. M. (2004). "Na řešení " (PDF). Proc. Japan Acad. 80 (A): 40–41.