← LibraryThe Extended Euclidean Algorithm and Modular InversesEngineering · MathematicsLesson 5/11← PrevNext →
GuidePublished 6 Aug 20265 min readBy Kevin JoginComputational Number TheoryFoundational AlgorithmsExtended Euclidean AlgorithmBezout Coefficients
Skip to the main content

MathematicsFoundational Algorithms

The Extended Euclidean Algorithm and Modular Inverses

Recovering Bézout coefficients alongside the GCD, and the modular inverse that follows directly from them.

Executive summary

The GCD plus a certificate of how it was formed

Bézout's identity states that gcd(ab) can be written as ua + vb for integers uv. The extended Euclidean algorithm produces these coefficients at essentially no extra asymptotic cost by carrying two auxiliary sequences through the same quotient sequence. The immediate payoff is modular inversion; the deeper payoff is rational reconstruction, which recovers a rational number from its image modulo a large integer.

Learning objectives

  • State Bézout's identity and the size bounds on its coefficients.
  • Carry the correct loop invariants through an extended GCD implementation.
  • Compute a modular inverse and detect when none exists.
  • Choose the half-extended variant when only one coefficient is needed.
  • Apply rational reconstruction to lift a modular result back to ℚ.

Section 01Bézout's identity

For integers ab not both zero there exist uv with

ua + vb = gcd(a, b)

The coefficients are not unique: adding a multiple of b/d to u and subtracting the corresponding multiple of a/d from v gives another solution. The algorithm returns the minimal pair, satisfying |u| ≤ b/(2d) and |v| ≤ a/(2d). These bounds matter: they guarantee no coefficient explosion, which is exactly the failure mode a naive implementation would produce.

Section 02The algorithm and its invariants

AlgorithmExtended Euclidean algorithmin: a, b ∈ ℤ  →  out: (u, v, d)
  1. Set (u, v, d) ← (1, 0, a) and (u', v', d') ← (0, 1, b).
  2. While d' ≠ 0:
  3.    Set q ← ⌊d / d'⌋.
  4.    Set (u, v, d, u', v', d') ← (u', v', d', u − qu', v − qv', d − qd').
  5.    Invariant: ua + vb = d and u'a + v'b = d' hold at every step.
  6. Return (u, v, d) with ua + vb = d = gcd(a, b).
The invariant is the whole proof. It holds initially, and the update is a linear combination that preserves it. Asserting it at loop exit is a cheap and complete correctness check.
Verify the invariant in production code

Checking u·a + v·b == d before returning costs two multiplications and catches essentially every implementation error in this routine, including sign errors and off-by-one updates. In a subject where wrong answers are plausible, this check is cheap insurance.

Section 03Modular inverse

The inverse of a modulo m exists precisely when gcd(am) = 1. Running the extended algorithm on (am) gives ua + vm = 1, and reducing modulo m gives ua ≡ 1, so u is the inverse.

AlgorithmModular inversionin: a, m  →  out: a−1 mod m, or failure with a factor
  1. Run the extended Euclidean algorithm on (a mod m, m) to obtain (u, v, d).
  2. If d ≠ 1, report that no inverse exists. d is then a non-trivial factor of m — useful information, not merely an error.
  3. Return u mod m, normalised to the range [0, m).
The failure case is informative. In factoring algorithms an unexpected non-trivial GCD during inversion is not an error at all — it is the answer.
The productive failure

Several factoring methods — Pollard’s ρ, p−1, and the elliptic curve method — work by deliberately provoking a failed inversion. Code in this domain should surface the offending GCD rather than raising a generic exception.

Section 04Half-extended and cost control

Often only one coefficient is wanted. Modular inversion needs u and discards v; the half-extended variant simply omits the v sequence, saving one multiplication and one subtraction per iteration together with the associated storage. On multiprecision operands this is a measurable saving.

Which variant to run
GoalVariantSequences carried
GCD onlyPlain EuclidRemainders only
Modular inverseHalf-extendedRemainders and u
Full Bézout identityFully extendedRemainders, u and v
Diophantine equation ax + by = cFully extendedRemainders, u and v, then scale by c/d
Rational reconstructionHalf-extended with early exitRemainders and u, stopped by size

For the Diophantine equation ax + by = c, a solution exists if and only if d = gcd(ab) divides c; then scaling the Bézout pair by c/d gives one solution, and the general solution adds integer multiples of (b/d, −a/d).

Section 05Rational reconstruction

Modular algorithms compute a result modulo a large integer m and then need to recover a rational number from it. If the true answer is x = p/q with |p|, q both smaller than √(m/2), it is uniquely recoverable — and the extended Euclidean algorithm recovers it.

AlgorithmRational reconstructionin: r, m  →  out: p/q with p/q ≡ r (mod m)
  1. Run the extended Euclidean algorithm on (m, r) where r is the known residue.
  2. Stop at the first step where the remainder di < √(m/2). Early termination is the entire trick.
  3. Set p ← di and q ← the corresponding cofactor.
  4. If gcd(p, q) = 1 and q ≤ √(m/2), return p/q; otherwise report failure.
This is why the Euclidean remainder sequence is worth stopping mid-way: the intermediate pairs are exactly the continued fraction convergents of r/m, and the best rational approximation of bounded height sits among them.
Where this is used

Rational reconstruction closes the loop on modular methods. A linear system is solved modulo several primes, the results are combined by the Chinese remainder theorem, and the rational solution is reconstructed — avoiding the coefficient explosion that direct rational elimination would cause.

ReferenceFrequently asked questions

Why are the Bezout coefficients bounded?

Because the auxiliary sequences grow in a controlled way governed by the same quotients that shrink the remainders. The product of the growth in the cofactors and the shrinkage in the remainders is essentially constant, which yields the standard bounds and guarantees no intermediate expression swell.

What does a failed modular inverse tell me?

That the GCD of the operand and the modulus is greater than 1 — and that GCD is a non-trivial factor of the modulus. Several factoring algorithms are built entirely around engineering this situation, so treat it as data rather than as an exception.

Is rational reconstruction always unique?

It is unique when the numerator and denominator are both bounded by the square root of half the modulus. Outside that range multiple rationals share the same residue and the reconstruction is ambiguous, so the size condition must be checked, not assumed.

NavigateContinue in this stream

Curated next steps from this page. The site also surfaces algorithmically related reading below.

ProvenanceSources and further reading

Knuth volume 2 and Cohen's GTM 138 both treat the extended algorithm and its variants; rational reconstruction is covered in the computer algebra literature, notably von zur Gathen and Gerhard.

This page is an original KEVOS explanatory article. It presents the underlying mathematics — definitions, algorithms, complexity results and selection criteria — in KEVOS editorial voice. No text is reproduced from any copyrighted source. Where numerical tables are relevant, KEVOS links to live authoritative databases rather than republishing static values.

Page ID
KV-MATH-0005
Taxonomy
ENG-MATH — Engineering / Mathematics
Collection
COL-CANT-001
Topic stream
CANT-FOUNDATIONS
Version
1.1.0 / content 2026.08
Last reviewed
2026-08-06

Continue learning

The Euclidean Algorithm and GCD ComputationGuide · MathematicsNEXT LESSON →Chinese Remainder Theorem AlgorithmsGuide · MathematicsModular Exponentiation and Powering AlgorithmsGuide · MathematicsContinued Fraction ExpansionsGuide · Mathematics