Le théorème de Tipperma est l'un des théorèmes de base de la théorie des nombres et est largement utilisé dans la détection des nombres premiers. Le théorème indique que si P est un nombre premier et a est tout entier qui n'est pas divisible par P, il y a un ^ {p-1} \ equiv 1 \ pmod {p} . Ce théorème peut être utilisé pour vérifier si un grand entier est un nombre premier.
Étant donné que les fonctions natives PHP ont des limites lorsqu'ils traitent des entiers super grands, les extensions GMP fournissent une prise en charge efficace de l'opération en entiers multi-procisions. Tout d'abord, vous devez confirmer que l'extension GMP est chargée. L'exemple est le suivant:
if (extension_loaded('gmp')) {
echo "GMPBibliothèque d'extension chargée。";
} else {
echo "GMPBibliothèque d'extension non chargée。";
exit;
}
En définissant une fonction, en utilisant la fonction de fonctionnement multi-précision de GMP pour effectuer plusieurs cycles de tests aléatoires, nous pouvons juger les principales propriétés des grands entiers:
function fermatTest($n, $k) {
for ($i = 0; $i < $k; $i++) {
$a = gmp_random_range(2, $n - 1); // Sélectionnez des entiers au hasarda
$result = gmp_powm($a, $n - 1, $n); // calculer a^(n-1) mod n
if (gmp_cmp($result, 1) !== 0) { // Le résultat n'est pas1,nNombres sans prisme
return false;
}
}
return true; // Passez tous les tests,nProbablement primordial
}
Afin de vérifier la précision de la fonction de test Tefama, vous pouvez définir une fonction de test d'assistance et appeler la méthode ci-dessus pour la vérifier plusieurs fois:
function testFermatTest($n) {
if (fermatTest($n, 10)) { // conduire10Test des conseils
echo "{$n} Probablement primordial。";
} else {
echo "{$n} Pas un nombre privilégié。";
}
}
L'exemple suivant montre comment effectuer un test de qualité du théorème Tipma sur un entier super grand:
<span class="fun">TestFerMattest (GMP_INIT ("100000000000000000000000000003"));</span>
Dans le code, la chaîne est convertie en un grand entier GMP via GMP_INIT , puis la fonction de test est appelée pour effectuer une détection.
Grâce aux étapes ci-dessus et combinées avec la bibliothèque d'extension GMP de PHP, nous pouvons implémenter un test de théorème TIPMA efficace pour les grands entiers. Cette méthode est simple et pratique et convient au jugement préliminaire de grands nombres. Cependant, pour améliorer la précision, le test de Tip Fermat est généralement utilisé en combinaison avec d'autres algorithmes de détection d'amorce.