GCD_Extended_Euclidean_Algorithm

153 days ago by rayzz

#!/usr/bin/env python import sys a = 100 b = 35 y = a r=1 qq=[] A=[] B=[] if a == b: sys.exit() if a > b : c = a a = b b = c while(r>0): q=integer_floor(b/a) qq.append(q) p=a*q r=b-p print b , "=",a,"*",q,"+",r b = a a = r print "\n" for j in range(len(qq)): if j == 0: A.append(qq[j]) B.append(1) if j == 1: A.append(qq[j] * A[j-1] + 1) B.append(B[j-1]*qq[j]) if j >= 2: A.append(qq[j] * A[j-1] + A[j-2]) B.append(B[j-1]*qq[j]+B[j-2]) for i in range(len(qq)): print repr(qq[i]).rjust(i), print "\n" for k in range(len(qq)): print repr(A[k]).rjust(k), print "\n" for l in range(len(qq)): print repr(A[l]).rjust(l), print "\n" print A[-1],"*",B[-2], " - ", A[-2], "*",B[-1], "= 1" print "\n" if A[-1] == y: print "U = ", B[-2], "V = -",A[-2] else: print "U = -",A[-2] , "V = ",B[-2] 
       
100 = 35 * 2 + 30
35 = 30 * 1 + 5
30 = 5 * 6 + 0


2 1  6 

2 3 20 

2 3 20 

20 * 1  -  3 * 7 = 1


U = - 3 V =  1
100 = 35 * 2 + 30
35 = 30 * 1 + 5
30 = 5 * 6 + 0


2 1  6 

2 3 20 

2 3 20 

20 * 1  -  3 * 7 = 1


U = - 3 V =  1