In der Zahlentheorie und Kryptographie wird Fermats Theorem häufig bei der Primärerkennung verwendet. Die Grundidee ist: Wenn eine bestimmte Ganzzahl ist eine Primzahl, dann für weniger als weniger als und gegenseitig konkurrierende ganze Zahlen mit , sollte befriedigen . Basierend auf dieser Funktion können wir einen schnell probabilistischen Primzahl -Testalgorithmus erstellen.
GMP (GNU Multiple Precision Arithmetic Library) ist eine leistungsstarke mathematische Berechnungsbibliothek mit mehreren Präzisions, die sich auf die Verarbeitung von großen Ganzzahlen spezialisiert hat. Nachdem die GMP-Erweiterung in PHP aktiviert ist, können Entwickler die Funktionen verwenden, die sie zur Verfügung stellen, um großnötigende Operationen effizient durchzuführen, einschließlich Multiplikation, Moduloperationen, Zufallszahlengenerierung usw.
Im Linux -System können Sie den folgenden Befehl verwenden, um die GMP -Erweiterung zu installieren:
sudo apt-get install php-gmp
In Windows nur die Erweiterung = php_gmp.dll in der Php.ini -Datei und starten Sie den Dienst neu.
Im Folgenden finden Sie eine Fermat -Testfunktion basierend auf PHP und GMP, mit der die Möglichkeit festgestellt wird, ob eine bestimmte große Zahl eine Primzahl ist.
Funktion fermatest ($ n, $ k) { if ($ n == 2) { zurückkehren; // 2 ist eine Primzahl} if ($ n <2 || $ n % 2 == 0) { false zurückgeben; // gleichmäßige und Zahlen weniger als 2 können keine Primzahlen sein} für ($ i = 0; $ i <$ k; $ i ++) { $ a = gmp_random_range (2, $ n - 2); // Zufallszahlen im Bereich $ r = gmp_powm ($ a, $ n - 1, $ n) generieren; // a^(n-1) mod n berechnen if (gmp_cmp ($ r, 1)! = 0) { false zurückgeben; // Fermat -Theorembedingungen sind nicht erfüllt} } zurückkehren; // Mehrere Tests treffen, kann Primary sein}
In dieser Funktion ist der Parameter $ n eine große Ganzzahl, die beurteilt werden muss, und $ K ist eine zufällige Anzahl von Tests. Je öfter die Genauigkeit der Ergebnisse höher ist.
Wir können den tatsächlichen Effekt der Funktion über den folgenden Code testen:
$ n = gmp_init ("1234567890987654321"); // Geben Sie die Testnummer $ k = 10 an; // 10 Tests $ result = fermatest ($ n, $ k) durchführen; if ($ result) { echo "vielleicht prim"; } anders { echo "nicht primär"; }
Im obigen Beispiel haben wir eine größere Zahl zum Testen ausgewählt. Abhängig von der Art des Fermat -Tests kann die Zahl als "wahrscheinlich Prim" betrachtet werden, wenn mehrere Tests die Bedingungen erfüllen.
Durch die von PHP integrierte GMP -Erweiterung können Entwickler den primären Erkennungsalgorithmus des Fermat -Theorems schnell implementieren. Diese Methode ist sehr geeignet für Anwendungsszenarien, die eine effiziente Überprüfung von großnötigen Eigenschaften erfordern, wie z.
Die Fähigkeit der GMP -Expansion ist mehr als das. Zusätzlich zum Fermat -Test unterstützt es eine Vielzahl von mathematischen Operationen, einschließlich Addition, Subtraktion, Multiplikation, Abteilung, Modul und Bitoperationen von großen Ganzzahlen. Es ist ein unverzichtbares Werkzeug für PHP, um mit groß angelegten mathematischen Problemen umzugehen.