The Greatest Common Divisor and the Euclidean Algorithm — Algebraic Foundations of an Algorithm