扩展欧几里得算法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即可

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值