Merge pull request #80 from atarax665/extended_euclidean_algorithm

[Discrete Mathematics] Extended Euclidean Algorithm
This commit is contained in:
Vitor Oliveira 2021-01-27 19:00:25 -08:00 committed by GitHub
commit f7fe59f47d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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, 5) = 1
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