用Python实现欧几里得和广义欧几里得公式并应用在中国剩余定理上

题目:

  • 用广义欧几里得除法求两个整数的最大公因数。
  • 用定理1.3.7求s和t使得:sa+tb = (a,b) 。
    在这里插入图片描述
    以上两题要求对任意大整数给出结果。
    这里给出python的题解。


    这个表是对定理的打表:
    这个是对定理的打表
    递推式为:
    在这里插入图片描述

因此用递推可得。
因为前三行的下标为-1,-2,所以用个n替换
n和j遵循同样的递推式。
因此建议直接建立一个新的递推表,下标直接沿用成n相关,验证同等位置是否和原来遵循相同的规律就好。
不要让原来有时候 j-1,有时候j+1, j和行数还完全不一样干扰自己。
把表转换成计算机能够直接读懂的模式!
把*看成0输入到列表。
Python的list类似于C++的vector,没定义之前不能直接使用,没插入值之前也不能直接下标调用

在这里插入图片描述
注意:Python的整除不是/ ,而是//

源代码是:

def gcd(big, small):
    while small:
        r = big % small
        big = small
        small = r
    return str(big)


def ex_gcd(a, b):
    s = [0, 1, 0]
    t = [0, 0, 1]
    r = [a, b]
    r.append(r[0] % r[1])
    q = [0, 0, r[0] // r[1]
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值