Integer.extended_gcd
You're seeing just the function
extended_gcd
, go back to Integer module for more information.
Specs
extended_gcd(integer(), integer()) :: {non_neg_integer(), integer(), integer()}
Returns the extended greatest common divisor of the two given integers.
It uses the Extended Euclidean algorithm to return a three-element tuple with the gcd
and the coefficients m
and n
of Bézout's identity such that:
gcd(a, b) = m*a + n*b
By convention, extended_gcd(0, 0)
returns {0, 0, 0}
.
Examples
iex> Integer.extended_gcd(240, 46)
{2, -9, 47}
iex> Integer.extended_gcd(46, 240)
{2, 47, -9}
iex> Integer.extended_gcd(-46, 240)
{2, -47, -9}
iex> Integer.extended_gcd(-46, -240)
{2, -47, 9}
iex> Integer.extended_gcd(14, 21)
{7, -1, 1}
iex> Integer.extended_gcd(10, 0)
{10, 1, 0}
iex> Integer.extended_gcd(0, 10)
{10, 0, 1}
iex> Integer.extended_gcd(0, 0)
{0, 0, 0}