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