Position actuelle: Accueil> Derniers articles> Explication détaillée de la fonction GMP_LEGENDRE () dans PHP: comment juger carré résiduel et quadratique non-remain

Explication détaillée de la fonction GMP_LEGENDRE () dans PHP: comment juger carré résiduel et quadratique non-remain

gitbox 2025-06-10

Quelle est la fonction GMP_LEGENDRE ()

Dans PHP, GMP_LEGENDRE () est une fonction fournie par l'extension GMP pour calculer le symbole Legendre. Cette fonction est largement utilisée dans la théorie des nombres, en particulier pour juger si un entier est le résidu carré dans un module principal.

La définition de la fonction est la suivante:

 int gmp_legendre(GMP $a, GMP $p)

Là où $ a est l'intégralité jugée, $ p est un nombre premier étrange, et les deux paramètres doivent être de type GMP.

La définition et la signification du symbole de Lejeune

Le symbole de Lejeander est une notation mathématique qui indique si un entier est un résidu quadratique sous un module principal. La définition mathématique est la suivante:

(a / p) = a (p? 1) / 2 mod p

Ici, A est n'importe quel entier, et P est un nombre premier étrange. Les résultats sont les suivants:

  • Si le résultat est 1 , cela signifie que A est le résidu carré de P ;
  • Si le résultat est ? 1 , cela signifie que A est le non-remaniement secondaire de P ;
  • Si le résultat est 0 , cela signifie que A et P ont des facteurs communs, ou a = 0 .

L'utilisation réelle de la fonction GMP_LEGENDRE ()

Ensuite, nous utilisons deux exemples pour illustrer comment utiliser GMP_LEGENDRE () pour déterminer si un entier est résiduel carré ou non réévaluant.

Déterminez si un nombre est au carré ou non

 
$a = gmp_init(5);
$p = gmp_init(7);
$ls = gmp_legendre($a, $p);
if ($ls == 1) {
    echo "$a Oui $p Carré restant";
} else {
    echo "$a 不Oui $p Carré restant";
}

La sortie sera: "5 est le carré restant de 7".

Déterminez si un nombre est quadratique et non réévalué

 
$a = gmp_init(5);
$p = gmp_init(11);
$ls = gmp_legendre($a, $p);
if ($ls == -1) {
    echo "$a Oui $p Non-ré-échange";
} else {
    echo "$a 不Oui $p Non-ré-échange";
}

La sortie de ce code sera: "5 n'est pas un non-réévaluation secondaire de 11".

Remarques lorsque vous utilisez GMP_LEGENDRE ()

Lorsque vous appelez la fonction GMP_LEGENDRE () , vous devez faire attention aux points suivants:

  • Les deux paramètres doivent être des entiers de type GMP.
  • Le deuxième paramètre $ P doit être un nombre premier étrange.
  • Avant d'utiliser cette fonction, assurez-vous que PHP a installé et activé les extensions GMP.

Résumer

GMP_LEGENDRE () est une fonction mathématique PHP pratique qui convient pour déterminer si un entier est un résidu carré dans un module principal. Ce n'est pas seulement un bon outil pour apprendre la combinaison de PHP et de théorie des nombres, mais a également une valeur d'application pratique en cryptographie, une compétition d'algorithme et d'autres domaines. Lorsque vous l'utilisez, il vous suffit de faire attention aux exigences de type GMP et de paramètres, et vous pouvez terminer avec succès le calcul du symbole Lejander.

Références

  • Liu Rujia. "Algorithmes entiers et polynômes". Pékin: Tsinghua University Press, 2008.