Descripción
array
gmp_gcdext ( resource a, resource b )
Calcula g, s y t, tales que cumplen que a*s + b*t = g =
mcd(a,b), donde mcd es el máximo común divisor.
Devuelve una matriz con los elementos g, s y t.
La función se puede emplear para resolver ecuaciones Diofánticas
lineales con 2 variables. Este tipo de ecuaciones solamente permiten soluciones
enteras y son de la forma:
a*x + b*y = c.
Para más información, puede visitar la dirección
"Diophantine Equation" de MathWorld
Ejemplo 1. Resolución de una ecuación Diofántica lineal
<?php // Resolver la ecuacion a*s + b*t = g // donde a = 12, b = 21, g = mcd(12, 21) = 3 $a = gmp_init(12); $b = gmp_init(21); $g = gmp_gcd($a, $b); $r = gmp_gcdext($a, $b);
$comprueba_mcd = (gmp_strval($g) == gmp_strval($r['g'])); $resultado_ecuacion = gmp_add(gmp_mul($a, $r['s']), gmp_mul($b, $r['t'])); $comprueba_resultado = (gmp_strval($g) == gmp_strval($eq_res));
if ($comprueba_mcd && $comprueba_resultado) { $fmt = "Solucion: %d*%d + %d*%d = %d\n"; printf($fmt, gmp_strval($a), gmp_strval($r['s']), gmp_strval($b), gmp_strval($r['t']), gmp_strval($r['g'])); } else { echo "Error al intentar resolver la ecuacion\n"; } // Salida: Solution: 12*2 + 21*-1 = 3 ?>
|
|