Вы не зарегистрированы? Нажмите здесь для регистрации.
Забыли пароль? Запросите новый здесь.
|
Вы должны авторизироваться, чтобы добавить сообщение.
|
|
|
Последние активные темы форума |
|
gmp_gcdext
(PHP 4 >= 4.0.4, PHP 5) gmp_gcdext -- Calculate GCD and multipliers
Descriptionarray gmp_gcdext ( resource a, resource b ) Calculates g, s, and t, such that a*s + b*t = g =
gcd(a,b), where gcd is the greatest common divisor. Returns
an array with respective elements g, s and t.
This function can be used to solve linear Diophantine equations in two
variables. These are equations that allow only integer solutions and have the form:
a*x + b*y = c.
For more information, go to the "Diophantine
Equation" page at MathWorld
Пример 1. Solving a linear Diophantine equation
<?php
// Solve the equation a*s + b*t = g
// where 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
"Error while solving the equation\n"
;
}
// output: Solution: 12*2 + 21*-1 = 3
?>
|
|
|
· Гостей: 20
· Пользователей: 0
· Всего пользователей: 453
· Новый пользователь: ZDA
|
|