Skip to content

Instantly share code, notes, and snippets.

@mark-i-m
Last active August 29, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mark-i-m/49c20264885aa77b19ac to your computer and use it in GitHub Desktop.
Save mark-i-m/49c20264885aa77b19ac to your computer and use it in GitHub Desktop.
euclid.py
#!/bin/env python2
import sys
# get first number
a = input('Enter first number: ')
print('a = %d' % a)
# get second number
b = input('Enter second numner: ')
print('b = %d' % b)
# a = b?
if a == b:
print('a = b, so GCD(%d,%d) = %d' % (a,b,a))
sys.exit()
# a > b?
# if not, swap
if a < b:
tmp = a
a = b
b = tmp
print('a < b, so swap a and b: a = %d, b = %d' % (a,b))
print('')
# r_{k-2}
rk2 = a
# r_{k-1}
rk1 = b
# r_k
rk = b
# a = b q + r
# rk-2 = rk-1 qk + rk
k = 0
while rk1 > 0:
rk = rk2 % rk1
print('%d:\tr_k-2 = %d\tr_k-1 = %d\trk = %d' % (k, rk2, rk1, rk))
rk2 = rk1
rk1 = rk
k += 1
print('%d:\tr_k-2 = %d\tr_k-1 = 0' % (k, rk2))
# rk2 is the last nonzero rk-1
print('\nGDD(%d, %d) = r_k-2 = %d' % (a,b,rk2))
@mark-i-m
Copy link
Author

mark-i-m commented May 4, 2015

You may need to chmod +x euclid.py before running

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment