- Steinscher Algorithmus
-
Der steinsche Algorithmus oder binäre euklidische Algorithmus dient der effizienten Berechnung des größten gemeinsamen Teilers. Der Algorithmus wurde 1967 vom Deutschen Josef Stein vorgestellt.[1] Donald Ervin Knuth zufolge entwickelten R. Silver und J. Tersian den Algorithmus bereits 1962, publizierten ihn aber nicht.[2]
Der Algorithmus nutzt folgende Rechenregeln:
, falls a und b gerade.
, falls a gerade und b ungerade.
, falls a und b ungerade.
Er ist auf Binärrechnern schneller als der jahrtausendealte Euklidische Algorithmus, weil keine zeitaufwändigen Divisionen (bzw. Modulooperationen) durchgeführt werden müssen. Es sind nur Divisionen durch 2 erforderlich, für man nur das Bitmuster um eins nach rechts, zum niederwertigen Ende, schieben muss. Die meisten Prozessoren besitzen dafür ein effizientes Schieberegister.
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.
STEIN(a,b) wenn a = 0 dann return b k
0 solange a und b gerade Zahlen sind a
a/2 b
b/2 k
k + 1 wenn a eine ungerade Zahl ist dann t
-b sonst t
a solange t ≠ 0 solange t eine gerade Zahl ist t
t/2 wenn t > 0 dann a
t sonst b
-t t
a - b return a
2k
Quellen
- ↑ J. Stein: Computational problems associated with Racah algebra. Journal of Computational Physics, Vol. 1, No. 3, pp. 397–405, 1967.
- ↑ 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
Wikimedia Foundation.