The set of common divisors of two given natural numbers is the set of divisors of one and only one natural number, called the “greatest common divisor” of the initial pair. To prove its existence, it is sufficient to exhibit we can always calculate it, from any pair of natural numbers. How to understand “greatest”? The order in question is divisibility: a partial order on set ℕ of natural numbers. For example, 2 is a common divisor of {30, 24},{\displaystyle {\text{of }}\,\{30,\ 24\,\},\,} that can be written: 2|30 and 2|24.{\displaystyle 2\,|\,30\,{\text{ and  }}\,2\,|\,24.\,} We will soon calculate the greatest common divisor of {30, 24}:{\displaystyle {\text{of }}\,\{30,\ 24\,\}:\,} GCD(30, 24)=6.{\displaystyle \,{\text{GCD}}(30,\ 24)=6.\,} Zero is multiple of any natural number, in other words, zero is the greatest element of ℕ for divisibility. And GCD(0, 0)=0 {\displaystyle {\text{And GCD}}(0,\ 0)=0\ } is not the greatest natural number for the usual order relation, of which the symbol is ⩽.{\displaystyle {\text{is }}\,\leqslant .\,} The least element of ℕ for divisibility is 1.
Denoting by C{\displaystyle {\text{Denoting by }}\,C\,} the set of common divisors of {30, 24},{\displaystyle \,{\text{of }}\,\{30,\ 24\,\},\,} 30 and 24{\displaystyle \,30\,{\text{ and  }}\,24\,} are multiples of any element dof C.{\displaystyle d\,{\text{of }}\,C.\,} Therefore 30−24=6{\displaystyle {\text{Therefore }}\,30-24=6\,} is also a multiple of d.{\displaystyle {\text{of }}\,d.\,} Conversely, every common divisor of {24, 6}{\displaystyle \,{\text{of }}\,\{24,\ 6\,\}\,} is also a divisor of 24 and 6+24=30.{\displaystyle \,{\text{of }}\,24\,{\text{ and }}\,6+24=30.\,} In other words, C is{\displaystyle \,C\,{\text{ is}}\,} also the set of common divisors of {24, 6}.{\displaystyle {\text{of }}\,\{24,\ 6\,\}.}
Under the algorithm of the image, {30, 24}{\displaystyle \{30,\ 24\,\}\,} is replaced with {24, 6},{\displaystyle {\text{with }}\,\{24,\ 6\,\},\,} and then by repeating the process replaced with {18, 6},{\displaystyle {\text{with }}\,\{18,\ 6\,\},\,} because 24−6=18.{\displaystyle {\text{because }}\,24-6=18.\,} And then replaced with {12, 6},{\displaystyle \,{\text{with }}\,\{12,\ 6\,\},\,} and with {6, 6}.{\displaystyle \,{\text{and with }}\,\{6,\ 6\,\}.\,} Finally the step‑by‑step process replaces the initial pair with {6, 0},{\displaystyle {\text{with }}\,\{6,\ 0\,\},\,} goes out of the loop of subtractions, and affirms: 6 is the GCD of 30 and 24.{\displaystyle {\text{6 is the GCD of }}\,30\,{\text{ and  }}\,24.}
Instead of replacing {24, 6}{\displaystyle \{24,\ 6\,\}\,} with the four successive pairs: {18, 6}, {12, 6}, {6, 6}, {0, 6},{\displaystyle \{18,\ 6\,\},\ \{12,\ 6\,\},\ \{6,\ 6\,\},\ \{0,\ 6\,\},\,} we could get directly the last pair by the Euclidean division of 24 by 6.{\displaystyle {\text{of }}\,24\,{\text{ by  }}\,6.\,} It does not matter there are 4 successive subtractions of 6, we can ignore 4: the quotient value of this Euclidean division. Actually, every sequence of subtractions of a same number can be replaced with an Euclidean division by this number. Thus we discover the more known algorithm of GCD through successive Euclidean divisions, by improving the present algorithm of subtractions.
A novice in coding can copy and paste in a window dedicated to JavaScript one of the following comparisons, and then command the execution: 30 &lt; 24; or 6 == 0; or 6 &lt; 24. Within the image, six symbols look like assignments in OCaml. Here is an example of assignment in JavaScript: r = 30; commanding to store into variable r{\displaystyle {\text{variable }}\,r\,} the object of type Number and value 30. Everyone can download Firefox, and then open a Firefox window dedicated to JavaScript code. In this special window, we can copy and paste the following translation from the flow chart into JavaScript.

/* To open a Firefox window
 dedicated to JavaScript code:  Shift + F4  */

d = r = k = 182; p = 238;  // example of input values,
// that we can replace with two other natural numbers
if( s = p){  // if the common value of s and p is not zero
while(r){  // while the value of r is not zero
if(r &lt; s){  // in this case, reverse the values of r and s
d = s; s = r; r = d }
r = r-s }  // end of the loop 'while(r)'
d = s }  // end of the block that begins with 'if( s = p)'
"   GCD("+ k +", "+ p +") = "+ d;  // output: a String object

// Keyboard shortcut in Firefox to execute the code:  Ctrl + L

On the image top,  r∈N {\displaystyle r\in \mathbb {N} \ } means that  r is a member{\displaystyle r\,{\text{ is a member}}} of set N{\displaystyle {\text{of set }}\mathbb {N} } of natural numbers. The previous JavaScript code works only if the two input values are natural numbers. Here is an improvement of the previous code, where the input values assigned to k and p{\displaystyle {\text{to }}\,k\,{\text{ and }}\,p\,} are verified.

try{ //  in case of error in this block,
//  execution failure of this code block, go to 'catch'
d = r = k = 408; p = 255;  // example of input values
var b;  // global scope declaration
s = function(n){
// to test the value of parameter n: is it a natural number?
b = n.constructor == Number; // Boolean value
if( !b // first incorrect case
  || n &lt; 0 || n != Math.floor(n)  // other incorrect cases
) throw n
//  in one of the previous cases, n is thrown as error
};  // end of assignment to variable s
s(k); s(p);  // verifications
if( s = p){  // if the common value of s and p is not zero
while(r){
if(r &lt; s){d = s; s = r; r = d} r = r-s } d = s }
"  GCD("+ k +", "+ p +") = "+ d
}catch(e){  // in case of error (if e is thrown)
"  "+( b ? e +"  is not a natural number.":
"  Incorrect code.")
}

The GCD operation is classically used to simplify a fraction. For example, GCD(408, 255)=51,{\displaystyle {\text{For example, GCD}}(408,\ 255)=51,\,} 40851=8  and  25551=5,{\displaystyle {\frac {\,408\,}{51}}=8\ {\text{ and }}\ {\frac {\,255\,}{51}}=5,\,} so 85{\displaystyle {\text{so }}\,{\frac {\,8\,}{5}}\,} is the irreducible form of 408255.{\displaystyle {\text{of }}\,{\frac {\,408\,}{255}}.} Two natural numbers of which the GCD is 1 are called coprime integers.
Own work
Arthur Baelde