【离散作业】中国剩余定理和求Zp元素的逆

某日因做离散作业需要计算 Z p Z_{p} Zp中元素的逆,还需要求解中国剩余定理的问题,所以直接写了个Python程序,写成博客留作纪念。

求解中国剩余定理

a=input("请输入序列a:").split(" ")
m=input("请输入序列m:").split(" ")
M=1
x=0
for mi in m:
    M*=eval(mi)
def return_inverse(a,b):
    x, y=a, b
    sa, ta=1, 0
    sb, tb=0, 1
    while y !=0:
        r=x%y
        if r==0:
            break
        q=x//y
        s1=sa-q*sb
        t1=ta-q*tb
        x, y=y, r
        sa,ta=sb, tb
        sb,tb=s1,t1
    return sb
for i in range(0,len(a)):
    x+=eval(a[i])*(M/eval(m[i]))*return_inverse(M/eval(m[i]), eval(m[i]))
print("x={}".format(x))`

Z p Z_{p} Zp中元素的逆(利用欧几里得算法)

a, b=input("请输入两个互质的数:").split(" ")
a=eval(a)
b=eval(b)
x, y=a, b
sa, ta=1, 0
sb, tb=0, 1
while y !=0:
    r=x%y
    if r==0:
        break
    q=x//y
    s1=sa-q*sb
    t1=ta-q*tb
    print("&{}={}*{}+{}\\\\".format(x,y,q,r))
    print("&{}={}*{}+{}*{}\\\\".format(r,s1,a,t1,b))
    x, y=y, r
    sa,ta=sb, tb
    sb,tb=s1,t1

输出的片段可以直接粘贴到latex的align*环境中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值