Lösung - Primzahlen 06Miller-Rabin-PrimzahltestDer Miller-Rabin-Test ist ein starker (probabilistischer) Primzahltest, der 1980 von Michael O. Rabin auf Basis von Ergebnissen von Gary. L. Miller veröffentlicht wurde. Dieser Primzahlen-Test ermöglicht es, Primzahlen in einer Größenordnung bis zu 10^1000 innerhalb kürzester Zeit zu berechnen. Wenn man noch höher hinaus will, nimmt die Rechenzeit allerdings deutlich zu. Während jene Zahlen, die den Test nicht bestehen, mit Sicherheit nicht prim sind, kann für die gefundenen Primzahlen nur eine Wahrscheinlichkeitssausage getroffen werden. Man nennt sie daher "pseudoprim". Die Wahrscheinlichkeit, dass eine derartig gefundene Pseudoprimzahl doch Teiler hat, ist jedoch bei hinreichender Wiederholung des Tests sehr klein, man spricht daher auch von starken Pseudoprimzahlen. Die meisten Computeralgebrasysteme verwenden auch den Miller-Rabin-Test für ihre Primzahlüberprüfung. Mathematische Grundlage ist wieder der kleine Satz von Fermat. Die weitere Zutat des Miller-Rabin-Tests ist folgender Satz: Satz: Wenn n eine Primzahl ist, dann hat die quadratische Gleichung x2 mod n = 1 nur die beiden Lösungen x = 1 und x = -1. Der Primzahlen-Test besteht nun darin, zu der zu prüfenden Zahl n eine Zahl a (einen "Zeugen") zu finden, mit der unter Zuhilfenahme des Fermattests und unter Überprüfung des Vorliegens einer nichttrivialen Quadratwurzel gezeigt werden kann, dass n keine Primzahl ist - in einer Kombination der beiden Bedingungen. Tipp: Wenn man viele Zahlen untersuchen möchte oder sehr große Zahlen betrachtet, empfiehlt es sich, zunächst die ersten möglichen Primfaktoren (aus einer vorher erstellten Liste) "abzuklopfen" und erst dann über den Miller-Rabin-Test vorzugehen - Grund: für kleine Primfaktoren ist das Verfahren zu langsam. Beispiele: n = 561, n-1 = 560 a = 2 560 = 16 * 35 = 2^4 * 35 wir betrachten 235 (erster Teiler 35) und quadrieren 4 mal (zweiter Teiler 16 = 24). 2^35 mod 561 = 263 263^ 2 mod 561 = 166 166^ 2 mod 561 = 67 67^ 2 mod 561 = 1 Damit gibt es aber eine nichttriviale Quadratwurzel. n = 561 ist also keine Primzahl. n = 1105, n-1 = 1104 a = 2 1104 = 2^4 * 3 * 23 wir betrachten 269 (erster Teiler 3*23=69) und quadrieren 4 mal (zweiter Teiler 16 = 24). 2^69 mod 1105 = 967 967^ 2 mod 1105 = 259 259^ 2 mod 1105 = 781 781^ 2 mod 1105 = 1 Damit gibt es aber wieder eine nichttriviale Quadratwurzel. Auch n = 1105 ist keine Primzahl. |