Was ist der schnellste Weg, um zu überprüfen, ob zwei gegebene Zahlen Co-Rime sind?

8

Eine Möglichkeit besteht darin, ihr gcd zu berechnen und zu prüfen, ob es 1 ist.

Gibt es einen schnelleren Weg?

    
Lazer 27.09.2009, 11:39
quelle

2 Antworten

12

Der euklidische Algorithmus (berechnet gcd ) ist sehr schnell. Wenn zwei Zahlen zufällig aus [1, n] gezogen werden, beträgt die durchschnittliche Anzahl der Schritte zum Berechnen ihrer gcd O(log n) . Die durchschnittliche Rechenzeit für jeden Schritt ist quadratisch in der Anzahl der Ziffern.

Es gibt Alternativen, die etwas besser funktionieren (d. h. jeder Schritt ist in der Anzahl der Ziffern subquadratisch), aber sie sind nur bei sehr großen ganzen Zahlen wirksam. Siehe zum Beispiel Über Schönhages Algorithmus und subquadratische ganzzahlige gcd-Berechnung .

    
jason 27.09.2009, 11:54
quelle
7

Wenn Sie auf einer Maschine arbeiten, deren Divisionen / Residuen wesentlich teurer sind als Shifts, sollten Sie binary GCD in Erwägung ziehen .

    
Jason S 27.09.2009 13:31
quelle