Cornacci-algoritmen er en algoritme til løsning af en diophantinsk ligning , hvor , og d og m er coprime . Algoritmen blev beskrevet i 1908 af Giuseppe Cornacci [1] .
Først finder vi en løsning . Hvis dette ikke eksisterer, har den oprindelige ligning ingen primitive løsninger. Uden tab af generalitet kan vi antage, at (hvis dette ikke er tilfældet, erstat r 0 med m - r 0 , som forbliver roden til - d ). Nu bruger vi Euklids algoritme til at finde , og så videre. Vi stopper når . Hvis er et heltal, så er løsningen . Ellers er der ingen primitiv løsning.
For at finde ikke-primitive løsninger ( x , y ) hvor gcd( x , y ) = g ≠ 1, skal du bemærke, at eksistensen af en sådan løsning indebærer, at g 2 deler m (og tilsvarende, hvis m er kvadratfri , så alle løsninger er primitive). Så kan ovenstående algoritme bruges til at finde en primitiv løsning ( u , v ) af ligningen . Hvis en sådan løsning findes, så vil ( gu , gv ) være løsningen til den oprindelige ligning.
Vi løser ligningen . Kvadratroden af −6 (mod 103) er 32 og 103 ≡ 7 (mod 32). Da og , er der en løsning x = 7, y = 3.
Basilla, Julius Magalona Om Cornacchias algoritme til løsning af den diofantinske ligning (PDF) (12. maj 2004).
Talteoretiske algoritmer | |
---|---|
Enkelthedstest | |
At finde primtal | |
Faktorisering |
|
Diskret logaritme | |
Finder GCD | |
Modulo aritmetik | |
Multiplikation og division af tal | |
Beregning af kvadratroden |