Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov
gmp_gcdext
(PHP 4 >= 4.0.4, PHP 5)
gmp_gcdext — Вычисление НОД и множителей
Описание
array gmp_gcdext ( resource $a , resource $b )Вычисляет величины g, s и t, в выражении a*s + b*t = g = gcd(a,b), где gcd - наибольший общий делитель. Возвращает массив, значения которого соответствуют значениям величин g, s и t.
Эта функция может использоваться для решения Диофантовых уравнении с двумя переменными. Это такие уравнения, которые имеют только целочисленные решения и имеют вид: a*x + b*y = c. За дополнительной информацией обращайтесь на » страницу "Диофантово уравнение" в MathWorld
Список параметров
a -
Может быть как числом GMP, так и строкой, при условии, что ее значение можно конвертировать в число.
b -
Может быть как числом GMP, так и строкой, при условии, что ее значение можно конвертировать в число.
Возвращаемые значения
Массив array GMP чисел.
Примеры
Пример #1 Решение линейного Диофантового уравнения
// Решение уравнения a*s + b*t = g
// где a = 12, b = 21, g = gcd(12, 21) = 3
$a = gmp_init(12);
$b = gmp_init(21);
$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 && $check_res) {
$fmt = "Solution: %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 "Ошибка во время решения уравнения\n";
}
// вывод: Решение: 12*2 + 21*-1 = 3
Смотрите также:
Описание на ru2.php.net
Описание на php.ru