Gestion de grands nombres en PHP pour l'exponentiation modulaire
L'exponentiation modulaire est une opération essentielle dans diverses applications mathématiques, telles que le test de primalité de Fermat. Cependant, traiter de grands nombres en PHP peut présenter des défis.
Si vous multipliez deux grands nombres en PHP, le résultat est automatiquement converti en flottant. Bien que cela puisse être pratique pour des opérations générales, cela devient un problème lorsque vous travaillez avec des valeurs modulaires.
$x = 62574 * 62574; var_dump($x); // float(3915505476) ... correct var_dump($x % 104659); // int(-72945) ... unexpected
L'opérateur modulo de PHP renvoie des résultats incorrects car le type de données float ne représente pas avec précision les grands entiers.
Solution : Bibliothèque GMP
Pour résoudre ce problème, vous pouvez utiliser le GMP (GNU Multi-Precision Library) en PHP. GMP fournit des fonctions et des types de données spécialement conçus pour travailler avec de grands nombres.
Vous pouvez installer GMP à l'aide du gestionnaire de packages Composer :
composer require gmp
Exemple :
use GMP; $x = GMP::mul(62574, 62574); var_dump($x); // gmp("3915505476") ... correct var_dump(GMP::mod($x, 104659)); // gmp("73714") ... correct
GMP fournit une large gamme de fonctions pour travailler avec de grands nombres, notamment les opérations de multiplication, d'addition, de comparaison et modulo. Ces fonctions garantissent des résultats précis, même pour les calculs les plus approfondis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!