Test von Primality

Ein Primality-Test ist ein Algorithmus, um zu bestimmen, ob eine Eingangszahl erst ist. Unter anderen Feldern der Mathematik wird es für die Geheimschrift verwendet. Verschieden von der ganzen Zahl factorization, primality Tests geben Hauptfaktoren nicht allgemein, nur festsetzend, ob die Eingangszahl erst ist., factorization ist ein rechenbetont schwieriges Problem, wohingegen Primality-Prüfung verhältnismäßig leicht ist (seine Laufzeit ist Polynom in der Größe des Eingangs). Einige Primality-Tests beweisen, dass eine Zahl erst ist, während andere Müller-Rabin mögen, beweisen, dass eine Zahl zerlegbar ist. Deshalb könnten wir die letzten Zerlegbarheitstests statt Primality-Tests nennen.

Naive Methoden

Der einfachste Primality-Test ist wie folgt: In Anbetracht eines Eingangs Nummer n,

überprüfen Sie ob jede ganze Zahl M von 2 bis n − 1 teilt n. Wenn n durch eine M dann n teilbar ist, ist zerlegbar, sonst ist es erst.

Jedoch, anstatt die ganze M bis zu n &minus zu prüfen; 1 ist es nur notwendig, M zu prüfen, bis zu: Wenn n dann zerlegbar ist, kann es factored in zwei Werte sein, von denen mindestens ein weniger sein müssen als oder gleich dem.

Die Leistungsfähigkeit kann auch durch das Auslassen der ganzen gleichen M außer 2, seitdem verbessert werden, wenn sich eine gerade Zahl teilt, tut n dann 2. Es kann weiter durch das Bemerken verbessert werden, dass die ganze Blüte der Form 6k ± 1, mit 2 und 3 ist, die einzigen Ausnahmen seiend. Das ist, weil alle ganzen Zahlen als (6k + i) für eine ganze Zahl k und weil ich = −1, 0, 1, 2, 3, oder 4 ausgedrückt werden können; 2 teilt sich (6k + 0), (6k + 2), (6k + 4); und 3 teilt sich (6k + 3). So ist eine effizientere Methode zu prüfen, wenn n durch 2 oder 3 teilbar ist, dann prüft man alle Zahlen der Form 6k ± 1 nach. Das ist 3mal so schnell wie, die ganze M prüfend.

Weiter verallgemeinernd, kann es gesehen werden, dass die ganze Blüte von der Form c#k + ich weil ich 3 5 = 30 ist. Alle ganzen Zahlen sind der Form 30k + ich weil ich = 0, 1, 2..., 29 und k eine ganze Zahl. Jedoch, 2 teilt sich 0, 2, 4..., 28 und 3 teilt sich 0, 3, 6..., 27 und 5 teilt sich 0, 5, 10..., 25. So sind alle Primzahlen der Form 30k + ich weil ich = 1, 7, 11, 13, 17, 19, 23, 29 (d. h. weil ich

Obwohl diese Methode über p Modulmultiplikationen verlangt, es unpraktisch machend, bilden Lehrsätze über die Blüte und Modulrückstände die Basis von vielen praktischeren Methoden.

Tests von Probabilistic

Die meisten populären Primality-Tests sind Probabilistic-Tests. Dieser Testgebrauch, abgesondert von der geprüften Nummer n, einige andere Zahlen a, die aufs Geratewohl aus einem Beispielraum gewählt werden; die üblichen randomized primality Tests melden nie eine Primzahl als Zusammensetzung, aber es ist für eine zerlegbare Zahl möglich, als erst berichtet zu werden. Die Wahrscheinlichkeit des Fehlers kann durch das Wiederholen des Tests mit mehreren unabhängig gewählten Werten von a reduziert werden; für zwei allgemein verwendete Tests, für jede Zusammensetzung n mindestens Hälfte, wie ns Zerlegbarheit entdecken, so reduzieren k Wiederholungen die Fehlerwahrscheinlichkeit auf höchstens 2, der willkürlich klein durch die Erhöhung k gemacht werden kann.

Die grundlegende Struktur von randomized primality Tests ist wie folgt:

  1. Picken Sie zufällig eine Zahl a auf.
  2. Überprüfen Sie etwas Gleichheit (entsprechend dem gewählten Test), a und die gegebene Nummer n einschließend. Wenn die Gleichheit scheitert für wahr zu halten, dann ist n eine zerlegbare Zahl, bekannt als ein Zeuge für die Zerlegbarheit und der Testhalt zu sein.
  3. Wiederholen Sie sich vom Schritt 1, bis die erforderliche Gewissheit erreicht wird.

Nach mehreren Wiederholungen, wenn, wie man findet, n keine zerlegbare Zahl ist, dann kann er wahrscheinlich erst erklärt werden.

Der einfachste probabilistic primality Test ist der Test von Fermat primality (wirklich ein Zerlegbarheitstest). Es arbeitet wie folgt:

:Given eine ganze Zahl n, wählen Sie eine ganze Zahl ein coprime zu n und berechnen Sie einen modulo n. Wenn das Ergebnis von 1 verschieden ist, dann ist n zerlegbar. Wenn es 1 ist, dann kann n oder kann nicht erst sein.

Der Test von Fermat primality ist nur ein heuristische Test; einige zerlegbare Zahlen (Zahlen von Carmichael) werden "wahrscheinlich erst" erklärt, egal was Zeuge gewählt wird. Dennoch wird es häufig verwendet, wenn eine schnelle Abschirmung von Zahlen, zum Beispiel in der Schlüsselgenerierungsphase des RSA öffentlichen Schlüssels kryptografischer Algorithmus erforderlich ist.

Der Müller-Rabin primality Test und Solovay-Strassen primality Test ist hoch entwickeltere Varianten, die alle Zusammensetzungen entdecken (wieder, bedeutet das: Für jede zerlegbare Nummer n mindestens sind 3/4 (Müller-Rabin) oder 1/2 (Solovay-Strassen) von Zahlen a Zeugen der Zerlegbarheit von n). Das sind auch Zerlegbarheitstests.

Der Müller-Rabin primality prüft Arbeiten wie folgt:

In Anbetracht einer ganzen Zahl n, wählen Sie eine ganze Zahl ein d = n − 1, wo d seltsam ist. Wenn

:

A^ {d} \not\equiv 1\pmod {n }\

</Mathematik>und:

a^ {2^rd} \not\equiv-1\pmod {n} </Mathematik> für alle

</Mathematik>

dann ist n zerlegbar und eines Zeugen für die Zerlegbarheit zu sein. Sonst kann n oder kann nicht erst sein.

Der Solovay-Strassen primality Test verwendet eine andere Gleichheit: In Anbetracht einer ungeraden Zahl n, wählen Sie eine ganze Zahl a, wo das Symbol von Jacobi, ist

dann ist n zerlegbar und eines Zeugen für die Zerlegbarheit zu sein. Sonst kann n oder kann nicht erst sein.

Diese zwei Primality-Tests sind häufig die Methoden der Wahl, weil sie einfach und viel schneller sind als andere allgemeine Primality-Tests. Eine Methode, Leistungsfähigkeit zu verbessern, ist weiter in einigen Fällen der Test von Frobenius pseudoprimality; eine Runde dieses Tests nimmt ungefähr dreimal so lang wie eine Runde des Müllers-Rabin, aber erreicht eine Wahrscheinlichkeit gebunden vergleichbar mit sieben Runden des Müllers-Rabin.

Leonard Adleman und Huang haben einen fehlerlosen präsentiert (aber hat polynomisch-malig erwartet) die Variante der elliptischen Kurve primality Test. Verschieden von den anderen Probabilistic-Tests erzeugt dieser Algorithmus ein primality Zertifikat, und kann so verwendet werden, um zu beweisen, dass eine Zahl erst ist. Der Algorithmus ist in der Praxis untersagend langsam.

Schnell deterministische Tests

In der Nähe vom Anfang des 20. Jahrhunderts wurde es gezeigt, dass ein Ergebnis des kleinen Lehrsatzes von Fermat verwendet werden konnte, um für primality zu prüfen. Das ist auf den Test von Pocklington primality hinausgelaufen. Jedoch, weil dieser Test einen teilweisen factorization von n  1 verlangt, war die Laufzeit noch im Grenzfall ziemlich langsam. Die ersten deterministischen primality prüfen bedeutsam schneller, als die naiven Methoden der Cyclotomy-Test waren; wie man beweisen kann, ist seine Durchlaufzeit O ((loggen Sie n)), wo n die Zahl ist, um für primality und c zu prüfen, ist ein unveränderlicher Unabhängiger von n. Viele weitere Verbesserungen wurden gebildet, aber, wie man beweisen konnte, hatte niemand polynomische Laufzeit. (Bemerken Sie, dass Laufzeit in Bezug auf die Größe des Eingangs gemessen wird, der in diesem Fall ~-Klotz n ist, dass die Zahl von Bit zu sein, die Nummer n vertreten musste.) Wie man beweisen kann, läuft die elliptische Kurve primality Test in O ((loggen Sie n)), aber nur wenn einige noch unbewiesen (aber weit angenommen, wahr zu sein), Behauptungen der analytischen Zahlentheorie verwendet werden. Ähnlich laut der verallgemeinerten Hypothese von Riemann kann der Test des Müllers-Rabin in eine deterministische Version verwandelt werden (hat gerufen der Test von Miller) mit der Durchlaufzeit Õ ((loggen Sie n)). In der Praxis ist dieser Algorithmus langsamer als die anderen zwei für Größen von Zahlen, die überhaupt befasst werden können. Weil die Durchführung dieser Methoden ziemlich schwierig ist und eine Gefahr schafft, Fehler zu programmieren, werden die langsameren, aber einfacheren Tests häufig bevorzugt.

2002 wurde der erste nachweisbar polynomische Zeittest auf primality von Manindra Agrawal, Neeraj Kayal und Nitin Saxena erfunden. Der AKS primality Test, Läufe in Õ ((loggen n)) (verbessert zu Õ ((loggen n)) in der veröffentlichten Revision ihres Papiers), der weiter auf Õ reduziert werden kann ((loggen n)), wenn die Vermutung von Sophie Germain wahr ist. Nachher haben Lenstra und Pomerance eine Version des Tests präsentiert, der rechtzeitig Õ läuft ((loggen Sie n)) unbedingt.

Kompliziertheit

In der rechenbetonten Kompliziertheitstheorie wird die formelle Sprache entsprechend den Primzahlen als BLÜTE angezeigt. Es ist leicht zu zeigen, dass BLÜTE in Co-NP ist: Seine Ergänzungs-ZUSAMMENSETZUNGEN sind in NP, weil man Zerlegbarheit durch nondeterministically das Schätzen eines Faktors entscheiden kann.

1975 hat Vaughan Pratt gezeigt, dass dort ein Zertifikat für primality bestanden hat, der checkable in der polynomischen Zeit, und so war, dass BLÜTE in NP, und deshalb in NP  coNP war. Sieh primality Zertifikat für Details.

Die nachfolgende Entdeckung der Algorithmen des Solovay-Strassens und Müllers-Rabin hat BLÜTE in der Handelsgesellschaft gestellt. 1992 hat der Algorithmus von Adleman-Huang die Kompliziertheit auf ZPP = RP  Handelsgesellschaft reduziert, die das Ergebnis von Pratt ersetzt hat.

Der cyclotomy Test von Adleman, Pomerance und Rumely von 1983 hat BLÜTE in QP gestellt (quasipolynomische Zeit), der, wie man bekannt, mit den Klassen nicht vergleichbar ist, die oben erwähnt sind.

Wegen seiner Lenkbarkeit in der Praxis, polynomisch-malige Algorithmen, die die Hypothese von Riemann und anderen ähnlichen Beweise annehmen, wurde es lange verdächtigt, aber nicht bewiesen, dass primality in der polynomischen Zeit gelöst werden konnte. Die Existenz des AKS primality Test hat schließlich diese langjährige Frage gesetzt und hat BLÜTE in P gelegt. Jedoch, BLÜTE ist nicht bekannt, P-complete zu sein, und es ist nicht bekannt, ob es in Klassen liegt, die innerhalb von P wie NC oder L liegen.

Mit der Zahl theoretische Methoden

Mit der bestimmter Anzahl theoretische Methoden bestehen, um zu prüfen, ob eine Zahl, wie der Test von Lucas und der Test von Proth erst ist. Diese Tests verlangen normalerweise factorization von n + 1, n &minus; 1, oder eine ähnliche Menge, was bedeutet, dass sie für die Mehrzweckprimality-Prüfung nicht nützlich sind, aber sind sie häufig ziemlich stark, wenn, wie man bekannt, die geprüfte Nummer n eine spezielle Form hat.

Der Test von Lucas verlässt sich auf die Tatsache, dass die multiplicative Ordnung einer Zahl ein modulo n n &minus ist; 1 für einen ersten n wenn einer primitiven Wurzel modulo n zu sein. Wenn wir zeigen können primitiv für n zu sein, können wir zeigen, dass n erst ist.

  • Kapitel 3: Blüte und Zusammensetzungen, Seiten 109-158 anerkennend. Kapitel 4: Primality Beweis, Seiten 159-190. Abschnitt 7.6: Elliptische Kurve primality Beweis (ECPP), Seiten 334-340.

Links


Aufgabe / Jane Wyman
Impressum & Datenschutz