Der Theorem von Tipperma ist eines der grundlegenden Theoreme in der Zahlentheorie und wird bei der Erkennung von Primzahl häufig verwendet. Der Satz gibt an, dass, wenn p eine Primzahl ist und A eine ganze Zahl ist, die durch P nicht teilbar ist, ein^{p-1} \ äquiv 1 \ pmod {p} . Dieser Satz kann verwendet werden, um zu überprüfen, ob eine große Ganzzahl eine Primzahl ist.
Da native PHP-Funktionen im Umgang mit super großen Ganzzahlen Einschränkungen aufweisen, bieten GMP-Erweiterungen einen effizienten Support für die Integer-Operation mit mehreren Präzisions. Zunächst müssen Sie bestätigen, dass die GMP -Erweiterung geladen ist. Das Beispiel lautet wie folgt:
if (extension_loaded('gmp')) {
echo "GMPVerlängerungsbibliothek geladen。";
} else {
echo "GMPErweiterungsbibliothek nicht geladen。";
exit;
}
Durch die Definition einer Funktion können wir mithilfe der Multi-Prescision-Betriebsfunktion von GMP mehrere Runden von zufälligen Tests durchführen, die primären Eigenschaften von DICRE Ganzzahlen beurteilen können:
function fermatTest($n, $k) {
for ($i = 0; $i < $k; $i++) {
$a = gmp_random_range(2, $n - 1); // Wählen Sie zufällig Ganzzahlen ausa
$result = gmp_powm($a, $n - 1, $n); // berechnen a^(n-1) mod n
if (gmp_cmp($result, 1) !== 0) { // Das Ergebnis ist nicht1,nNicht-Primes-Zahlen
return false;
}
}
return true; // Alle Tests bestehen,nWahrscheinlich Prime
}
Um die Genauigkeit der Tefama -Testfunktion zu überprüfen, können Sie eine Helfer -Testfunktion definieren und die obige Methode aufrufen, um sie mehrmals zu überprüfen:
function testFermatTest($n) {
if (fermatTest($n, 10)) { // Benehmen10Tipps Test
echo "{$n} Wahrscheinlich Prime。";
} else {
echo "{$n} Keine Primzahl。";
}
}
Das folgende Beispiel zeigt, wie ein Tipma-Theorem-Qualitätstest auf einer super großen Ganzzahl durchgeführt wird:
<span class="fun">testFerMatest (GMP_init ("10000000000000000000000003"));</span>
Im Code wird die Zeichenfolge über gmp_init in eine GMP -große Ganzzahl konvertiert, und dann wird die Testfunktion zur Erkennung aufgerufen.
Durch die oben genannten Schritte und in Kombination mit der GMP -Erweiterungsbibliothek von PHP können wir einen effektiven TIPMA -Theorem -Test für große ganze Zahlen implementieren. Diese Methode ist einfach und praktisch und für ein vorläufiges Urteil über große Zahlen geeignet. Um die Genauigkeit zu verbessern, wird der Tipp -Fermat -Test jedoch normalerweise in Kombination mit anderen Primer -Erkennungsalgorithmen verwendet.