Steinscher Algorithmus
Der steinsche Algorithmus oder binäre euklidische Algorithmus dient der effizienten Berechnung des größten gemeinsamen Teilers. Der Algorithmus wurde 1967 von dem Deutschen Josef Stein vorgestellt. Es gibt Quellen, die behaupten, dass R. Silver und J. Tersian bereits 1962 den Algorithmus entwickelten.
Die Verbesserung gegenüber dem Jahrtausende alten Euklidischen Algorithmus resultiert aus der Ausnutzung folgender Rechenregeln:
- , falls a und b gerade.
- , falls a gerade und b ungerade.
- , falls a und b ungerade.
Einer der Vorteile dieses Algorithmus besteht darin, dass keine zeitaufwendigen Divisionen (bzw. Modulooperationen) durchgeführt werden müssen, sondern nur Divisionen durch 2 erforderlich sind, die auf Binärrechnern effizient ausgeführt werden können.
Algorithmus
Die hier in Pseudocode beschriebene Variante des Algorithmus entspricht im Wesentlichen derjenigen, die Donald E. Knuth in seinem Werk The Art of Computer Programming beschreibt.[1]
STEIN(a,b)
1 k 0
2 solange a und b gerade Zahlen sind
3 a a/2
4 b b/2
5 k k + 1
6 wenn a eine ungerade Zahl ist
7 dann t -b
8 sonst t a
9 solange t ≠ 0
10 solange t eine gerade Zahl ist
11 t t/2
12 wenn t > 0
13 dann a t
14 sonst b -t
15 t a - b
16 return
Quellen
- ↑ Donald E. Knuth: The Art of Computer Programming. Volume 2: Seminumerical Algorithms. 3. Auflage. Addison-Wesley Professional, 1997, ISBN 0-201-89684-2, S. 338–341