The greatest common divisor ( GCD ) of two integers a and b is usually calculated with the ( well-known ) Euclidean Algorithm. There is however an alternative algorithm which is based on an entirely different idea. Let's illustrate this idea with an example. Let a, b be integers, a >:b and (a, b) = GCD(a,b). Then the following rules can be applied recursively until a=b=GCD(a,b):
If ( a=even AND b=even) then GCD(a,b)=2*GCD(a/2,b/2)
If ( a=odd AND b=even) then GCD(a,b)=GCD(a,b/2)
If ( a=even AND b=odd) then GCD(a,b)=GCD(a/2,b)
If ( a=odd AND b=odd) then GCD(a,b)=GCD(a-b,b)
(36, 27) = (27, 36/2)
(27, 18) = (27, 18/2)
(27, 9) = (27-9, 9)
(18, 9) = (18/2, 9)
(9, 9) Halt.
Compare using the Euclidean Algorithm
36 = 1 * 27 + 9
27 = 3 * 9 + 0 Halt.
However, this doesn't mean that the Euclidean Algorithm is always faster.
13-2016 Open letter to Open Source for You (OSFY)
4 months ago