Position actuelle: Accueil> Derniers articles> Comment utiliser PHP et GMP pour le test du théorème Fermat de grands nombres

Comment utiliser PHP et GMP pour le test du théorème Fermat de grands nombres

M66 2025-06-07

Introduction au théorème et au test de qualité de Ferma

Dans la théorie des nombres et la cryptographie, le théorème de Fermat est largement utilisé dans la détection primaire. L'idée de base est: si un certain entier n n est un nombre premier, alors pour moins que n n et entiers mutuellement concurrents avec a a , devrait satisfaire a n ? 1 1 m o d ? ? n a^{n-1} \equiv 1 \mod n . Sur la base de cette fonctionnalité, nous pouvons construire un algorithme de test de nombres premiers probabiliste rapide.

Introduction à l'extension GMP

GMP (bibliothèque Arithmétique de précision multiple GNU) est une bibliothèque de calcul mathématique multi-précision haute performance qui se spécialise dans le traitement de grands entiers. Après avoir activé l'extension GMP dans PHP, les développeurs peuvent utiliser les fonctions qu'ils fournissent pour effectuer efficacement des opérations de grand nombre, y compris la multiplication, les opérations de module, la génération de nombres aléatoires, etc.

Dans le système Linux, vous pouvez utiliser la commande suivante pour installer l'extension GMP:

 sudo apt-get install php-gmp

Dans Windows, il suffit de décommenter l'extension = php_gmp.dll dans le fichier php.ini et redémarrer le service.

Implémentation de la fonction de test du théorème de Ferma

Vous trouverez ci-dessous une fonction de test Fermat basée sur PHP et GMP, qui est utilisée pour déterminer la possibilité de savoir si un grand nombre donné est un nombre premier.

fonction Fermattest ($ n, $ k) {
    if ($ n == 2) {
        Retour Vrai; // 2 est un nombre premier}
    if ($ n <2 || $ n% 2 == 0) {
        retourne false; // même et les nombres de moins de 2 ne peuvent pas être des nombres premiers}
    pour ($ i = 0; $ i <$ k; $ i ++) {
        $ a = gmp_random_range (2, $ n - 2); // générer des nombres aléatoires dans la plage $ r = gmp_powm ($ a, $ n - 1, $ n); // calculer un ^ (n-1) mod n
        if (gmp_cmp ($ r, 1)! = 0) {
            retourne false; // Les conditions du théorème Fermat ne sont pas remplies}
    }
    Retour Vrai; // Rencontre plusieurs tests, peut être premier}

Dans cette fonction, le paramètre $ n est un grand entier qui doit être jugé, et $ k est un nombre aléatoire de tests. Plus il y a de fois, plus la précision des résultats est élevée.

Exemple de test: vérifiez de grands nombres

Nous pouvons tester l'effet réel de la fonction via le code suivant:

$ n = gmp_init ("1234567890987654321"); // spécifie le numéro de test $ k = 10; // effectuer 10 tests $ result = Fermattest ($ n, $ k);

if ($ result) {
    écho "peut-être prime";
} autre {
    écho "non-prison";
}

Dans l'exemple ci-dessus, nous avons sélectionné un plus grand nombre pour les tests. Selon la nature du test Fermat, si plusieurs tests remplissent les conditions, le nombre peut être considéré comme "probablement primaire".

Scénarios de résumé et d'application

Grâce à l'extension GMP intégrée par PHP, les développeurs peuvent rapidement implémenter l'algorithme de détection principal du théorème du Fermat. Cette méthode est très adaptée aux scénarios d'application qui nécessitent une vérification efficace des propriétés à grand nombre, telles que la génération de clés, le dépistage à grand nombre dans les systèmes de chiffrement, etc.

La capacité de l'expansion des GMP est plus que cela. En plus du test Fermat, il prend également en charge une variété d'opérations mathématiques, notamment l'addition, la soustraction, la multiplication, la division, le module et les opérations de bits de grands entiers. Il s'agit d'un outil indispensable pour PHP pour faire face aux problèmes mathématiques à grande échelle.