Fonction PHP gmp_gcdext ()

| | | | | | | | | | | | |
Syntaxe :
array gmp_gcdext (GMP $a, GMP $b) 
Paramètres :La fonction gmp_gcdext() prend deux paramètres, listés ci-dessus et décrits ci-dessous :
  •  :Ce paramètre peut être une ressource GMP en PHP 5.5 et versions antérieures, un objet GMP en PHP 5.6, ou nous aussi une chaîne numérique est autorisée, à condition que la chaîne puisse être convertie à un nombre.
  •  :Ce paramètre peut être une ressource GMP en PHP 5.5 et versions antérieures, un objet GMP en PHP 5.6, ou nous sommes également autorisés à passer une chaîne numérique, à condition que la chaîne puisse être convertie en nombre.
Retourne :Cette fonction renverra un tableau de nombres GMP ( GNU Multiple Precision  : pour grands nombres), qui sont les facteurs (x et y de l`équation donnée) et pgcd. Exemples :
Entrée : a = 12, b = 21 équation = 12 * x + 21 * y = 3 Sortie : Entrée : a = 5, b = 10 équation = 5 * x + 10 * y = 5 Sortie : x = 1, y = 0, GCD (12,21) = 5 
Le programme ci-dessous illustre la fonction gmp_gcdext() :
// Code PHP pour résoudre l`équation diophantienne
// Résoudre l`équation a * x + b * y = g
// où a =, b =, g = pgcd (5, 6) = 1$a = gmp_init (5 ); $b = gmp_init (6);
// calcule pgcd à partir de deux nombres gmp $g = gmp_gcd ( $a , $b ); $r = gmp_gcdext ( $a , $b ); $check_gcd = (gmp_strval ( $g ) == gmp_strval ( $r [ `g` ])); $eq_res = gmp_add (gmp_mul ( $a , $r [ `s` ]), gmp_mul ( $b , $r [ `t` ])); $check_res = (gmp_strval ( $g ) == gmp_strval ( $eq_res )); if ( $check_gcd & & amp; $check_res ) {/code> $fmt = "Solution : % d *% d +% d *% d =% d " ; printf ( $fmt , gmp_strval ( $a ), gmp_strval ( $r [ `s` ]), gmp_strval ( $b ), gmp_strval ( $r [ ` t` ]), gmp_strval ( $r [ `g` ])); }
else echo "Erreur générée"  ; ?>
Sortie :
Solution : 5 * -1 + 6 * 1 = 1 
Lien : http://php.net/manual/en/function.gmp-gcdext.php