Schnellste primality test
Konnte Sie deuten auf eine schnelle, deterministische Methode, die verwendbar ist, in der Praxis zu testen, ob eine große Zahl eine Primzahl ist oder nicht?
Außerdem würde ich gerne wissen, wie der Umgang mit nicht-deterministischen primality tests korrekt. Zum Beispiel, wenn ich mit einer solchen Methode kann ich mir sicher sein, dass eine Zahl keine Primzahl, wenn der Ausgang auf "Nein", aber was ist mit dem anderen Fall, wenn der Ausgang "wahrscheinlich"? Muss ich testen, primality manuell in diesem Fall?
Vielen Dank im Voraus.
- Die Antworten und Kommentare auf diese Frage über CS, hat einige gute Einblicke in die Methoden zu wählen, Wann und warum: cs.stackexchange.com/questions/23260/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur die deterministischen, polynomial-time algorithm for primality Tests, die ich kenne, ist die AKS primality test (http://en.wikipedia.org/wiki/AKS_primality_test). Allerdings gibt es eine Menge sehr guter randomisierte primality tests, die sind schnell und haben sehr gute Erfolgsaussichten. Sie arbeiten in der Regel durch Feststellung, ob die Zahl zusammengesetzt ist, mit exponentiell gute Wahrscheinlichkeit, so werden Sie entweder Bericht, dass die Zahl zusammengesetzt ist oder wird von Ihnen verlangen, zu sagen, "vielleicht" mit sehr gut Vertrauen.
"Wahrscheinlich" bedeutet eigentlich 1-ε, und ε wird so klein, wie Sie benötigen.
Meisten Anwendungen haben einige kleine, aber von null verschiedenen Wahrscheinlichkeit zu scheitern, dass nicht mit primality testing, zum Beispiel
in kryptographischen Anwendungen, die ein Angreifer zum Glück erraten, das Geheimnis, zum Beispiel,
eine Wahrscheinlichkeit von 2^(-100)
einen hardware-Fehler (strahlenbedingte) zufällig spiegeln sich einige etwas von Ihrem computer-Speicher (vielleicht einer, der hält den Ausgang des "deterministischen" primality test
bugs (ja, wahrscheinlicher als die andere Art der Fehler)
So drücken die ε zu, dass die Größenordnung genügt in der Praxis.
Beispielsweise OpenSSL, GnuPG, der die Verwendung von nicht-deterministischen primality test nur. `Wahrscheinlich", die Sie nicht wirklich wollen, keine deterministische Tests. Aber prüfen Sie, was Ihnen zur Verfügung steht: Wenn Sie irgendwelche Bibliotheken zur hand, und führen Sie genug - gehen Sie auf und verwenden Sie Sie.
Wenn Sie schauen, um eine zufällige prime für den Einsatz im RSA-Schlüssel, die Sie verwenden sollten ein probabilistischer test zunächst. Wenn die Wahrscheinlichkeit hoch genug für Ihre Bedürfnisse, dann stoppen Sie es. Wenn Sie müssen sicher sein, dann, wenn Sie finden eine große zufällige wahrscheinlich-prime, überprüfen Sie es mit AKS oder anderen nicht-probabilistische test. Dadurch können Sie prüfen, eine Menge von nicht-Primzahlen schnell, während Sie sicher, wenn Sie denken, Sie haben eine gefunden.
Werden, wenn Sie versuchen, um zu überprüfen, einer bestimmten, vorhandenen Zahl eine Primzahl ist, dann sollten Sie mit einer der tests, die Antworten mit Sicherheit. Es gibt noch andere nicht-polynomial-Zeit-tests zu erhalten, verwenden Sie eine, die ist am schnellsten in der Praxis.