Heim >Backend-Entwicklung >PHP-Tutorial >Wie man PHP und GMP verwendet, um Fermat-Primalitätstests für große Zahlen zu implementieren
So verwenden Sie PHP und GMP, um den Fermat-Primalitätstest für große Zahlen zu implementieren
Einführung:
Der Fermat-Primalitätstest ist eine einfache Methode, um festzustellen, ob eine Zahl eine Primzahl ist. Diese Methode basiert auf dem kleinen Satz von Fermat, der besagt, dass, wenn p eine Primzahl und a eine positive ganze Zahl kleiner als p ist, a^(p-1) ≡ 1 (mod p) ist. Mit diesem Satz können wir mithilfe eines zufällig ausgewählten a testen, ob eine Zahl eine Primzahl ist. In diesem Artikel werden wir PHP- und GMP-Bibliotheken verwenden, um Fermat-Primalitätstests für große Zahlen zu implementieren.
Installation und Einrichtung:
Stellen Sie zunächst sicher, dass auf Ihrem System PHP- und GMP-Bibliotheken installiert sind. Wenn Sie sie noch nicht installiert haben, können Sie sie installieren, indem Sie den folgenden Befehl in der Befehlszeile ausführen:
sudo apt-get install php sudo apt-get install php-gmp
Als nächstes erstellen Sie eine Datei mit dem Namen „fermat_prime.php“ und öffnen Sie sie mit einem Texteditor.
Implementieren Sie die Fermat-Primalitätstestfunktion:
Fügen Sie den folgenden Code hinzu, um die Fermat-Primalitätstestfunktion zu implementieren:
<?php function is_prime($n, $k) { if ($n <= 1 || $n == 4) { return false; } if ($n <= 3) { return true; } while ($k > 0) { // 随机选择一个 [2, $n-2] 之间的整数 $a = gmp_random_range(2, $n-2); // 使用 GMP 函数进行幂运算 $res = gmp_powm($a, $n-1, $n); // 如果不满足费马小定理,则 n 不是素数 if (gmp_cmp($res, 1) != 0) { return false; } $k--; } return true; }
Parsen Sie den Code:
is_prime
akzeptiert zwei Parameter, $n ist der Zahl, die getestet werden soll, $k ist die Anzahl der Testsis_prime
接受两个参数,$n是待测试的数,$k是测试的次数gmp_powm
进行幂运算。测试代码:
在代码文件的末尾添加以下代码来测试is_prime
Als nächstes verwendet die Funktion eine While-Schleife, um $k-Tests durchzuführen. In jeder Schleife wählt die Funktion zufällig eine positive ganze Zahl zwischen 2 und $n-2 aus und verwendet die GMP-Funktion gmp_powm
zur Potenzierung.
Wenn die Überprüfung des Kleinen Satzes von Fermat in $k-Tests bestanden wird, gibt die Funktion „true“ zurück, was darauf hinweist, dass es sich bei der Zahl möglicherweise um eine Primzahl handelt.
Testen Sie den Code:Fügen Sie den folgenden Code am Ende der Codedatei hinzu, um die Wirkung der Funktion is_prime
zu testen:
// 测试1: 检测一个较小的素数 $n = gmp_init("17"); $k = 5; $result = is_prime($n, $k); echo $result ? "$n is probable prime " : "$n is not prime "; // 测试2: 检测一个较大的合数 $n = gmp_init("123456789123456789"); $k = 5; $result = is_prime($n, $k); echo $result ? "$n is probable prime " : "$n is not prime ";Speichern und schließen Sie die Datei. Führen Sie den Code aus:
Führen Sie den folgenden Befehl in der Befehlszeile aus, um die Codedatei auszuführen:
php fermat_prime.phpAls nächstes sollten Sie die Ergebnisse der Programmausgabe in der Befehlszeile sehen können:🎜
17 is probable prime 123456789123456789 is not prime🎜Fazit:🎜Dies Der Artikel erklärt, wie man PHP und die GMP-Bibliothek verwendet, um Fermat-Primalitätstests für große Zahlen zu implementieren. Mit diesem einfachen Test können wir feststellen, ob eine größere Zahl eine Primzahl ist. Mit dieser Methode können wir den kleinen Satz von Fermat besser verstehen und grundlegende Primzahltestfunktionen implementieren. 🎜
Das obige ist der detaillierte Inhalt vonWie man PHP und GMP verwendet, um Fermat-Primalitätstests für große Zahlen zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!