1. 程式人生 > >擴充套件歐幾里得演算法python版

擴充套件歐幾里得演算法python版

程式功能:

            輸入兩個數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即可