擴充套件歐幾里得演算法python版
阿新 • • 發佈:2018-12-14
程式功能:
輸入兩個數m,n (m>n)
輸出他們的最大公約數,同時輸出s,t ( m*s + n*t = 1)
#-*-coding:utf-8-*- # 擴充套件歐幾里得演算法 # 輸入m n # 輸出 m n的最大公約數 還有s,t # # 預設 m > n import sys def exgcd(m,n,x,y): if n == 0: x = 1 y = 0 return (m,x,y) a1 = b = 1 a = b1 = 0 c = m d = n q = int(c/d) r = c%d while r: c = d d = r t = a1 a1 = a a = t-q*a t = b1 b1 = b b = t-q*b q = int(c/d) r = c%d x = a y = b return (d,x,y) m = int(sys.argv[1]) n = int(sys.argv[2]) ans = exgcd(m,n,0,0) print("gcd(%d,%d) = %d"%(m,n,ans[0])) print("s = %d, t = %d"%(ans[1],ans[2]))
用法: 命令列後面直接跟 m, n即可