From a3e9ee2ece3e4471b6a613ae975e8dfcbb959793 Mon Sep 17 00:00:00 2001 From: Abhinav Anand Date: Fri, 22 Jan 2021 13:38:45 +0530 Subject: [PATCH] extended_euclidean_algorithm.rb --- .../exteded_euclidean_algorithm.rb | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 discrete_mathematics/exteded_euclidean_algorithm.rb diff --git a/discrete_mathematics/exteded_euclidean_algorithm.rb b/discrete_mathematics/exteded_euclidean_algorithm.rb new file mode 100644 index 0000000..8b7c17d --- /dev/null +++ b/discrete_mathematics/exteded_euclidean_algorithm.rb @@ -0,0 +1,31 @@ +# https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm + +def extended_euclidean_gcd(a, b) + + x0, x1 = a, b + s, t = 1, 0 + until x1.zero? + q, x2 = x0.divmod(x1) + x0, x1 = x1, x2 + s, t = t, s - q * t + end + gcd = x0 + return gcd +end + +puts "GCD(3, 5) = " + extended_euclidean_gcd(3, 5).to_s +# GCD(3, 6) = 3 +puts "GCD(3, 6) = " + extended_euclidean_gcd(3, 6).to_s +# GCD(3, 6) = 3 +puts "GCD(6, 3) = " + extended_euclidean_gcd(6, 3).to_s +# GCD(6, 3) = 3 + +=begin + +Dynamic driver code: + +a = gets.to_i +b = gets.to_i +puts "GCD (#{a}, #{b} ) = #{extended_euclidean_gcd(a, b)}" + +=end