CINTA 第六次作业

1. 运用 C R T 求解: 1.运用CRT求解: 1.运用CRT求解:
x ≡ 8 ( m o d 11 ) x\equiv8\pmod{11} x8(mod11)
x ≡ 3 ( m o d 19 ) x\equiv3\pmod{19} x3(mod19)
解:运用 C R T 得 解:运用CRT得 解:运用CRT
x = ( 8 ∗ 19 ∗ 1 9 − 1 + 3 ∗ 11 ∗ 1 1 − 1 ) ( m o d 11 ∗ 19 ) x=(8*19*19^{-1}+3*11*11^{-1})\pmod{11*19} x=(819191+311111)(mod1119)
其中, 19 ∗ 1 9 − 1 ≡ 1 ( m o d 11 ) , 11 ∗ 1 1 − 1 ≡ 1 ( m o d 19 ) , 得 其中,19*19^{-1}\equiv1\pmod{11},11*11^{-1}\equiv1\pmod{19},得 其中,191911(mod11),111111(mod19),
1 9 − 1 = 7 , 1 1 − 1 = 7 19^{-1}=7,11^{-1}=7 191=7,111=7
x = ( 8 ∗ 19 ∗ 7 + 3 ∗ 11 ∗ 7 ) ( m o d 11 ∗ 19 ) = 1295 ( m o d 209 ) x=(8*19*7+3*11*7)\pmod{11*19}=1295\pmod{209} x=(8197+3117)(mod1119)=1295(mod209)
得, x = 41 得,x=41 得,x=41

2. 运用 C R T 求解: 2.运用CRT求解: 2.运用CRT求解:
x ≡ 1 ( m o d 5 ) x\equiv1\pmod{5} x1(mod5)
x ≡ 2 ( m o d 7 ) x\equiv2\pmod{7} x2(mod7)
x ≡ 3 ( m o d 9 ) x\equiv3\pmod{9} x3(mod9)
x ≡ 4 ( m o d 11 ) x\equiv4\pmod{11} x4(mod11)
解:运用 C R T 得 解:运用CRT得 解:运用CRT
x = ( 1 ∗ ( 7 ∗ 9 ∗ 11 ) ∗ ( 7 ∗ 9 ∗ 11 ) − 1 + 2 ∗ ( 5 ∗ 9 ∗ 11 ) ∗ ( 5 ∗ 9 ∗ 11 ) − 1 + 3 ∗ ( 5 ∗ 7 ∗ 11 ) ∗ ( 5 ∗ 7 ∗ 11 ) − 1 + 4 ∗ ( 5 ∗ 7 ∗ 9 ) ∗ ( 5 ∗ 7 ∗ 9 ) − 1 ) ( m o d 5 ∗ 7 ∗ 9 ∗ 11 ) x=(1*(7*9*11)*(7*9*11)^{-1}+2*(5*9*11)*(5*9*11)^{-1}+3*(5*7*11)*(5*7*11)^{-1}+4*(5*7*9)*(5*7*9)^{-1})\pmod{5*7*9*11} x=(1(7911)(7911)1+2(5911)(5911)1+3(5711)(5711)1+4(579)(579)1)(mod57911)
其中, ( 7 ∗ 9 ∗ 11 ) ∗ ( 7 ∗ 9 ∗ 11 ) − 1 ≡ 1 ( m o d 5 ) , ( 5 ∗ 9 ∗ 11 ) ∗ ( 5 ∗ 9 ∗ 11 ) − 1 ≡ 1 ( m o d 7 ) , 其中,(7*9*11)*(7*9*11)^{-1}\equiv1\pmod{5},(5*9*11)*(5*9*11)^{-1}\equiv1\pmod{7}, 其中,(7911)(7911)11(mod5),(5911)(5911)11(mod7)
( 5 ∗ 7 ∗ 11 ) ∗ ( 5 ∗ 7 ∗ 11 ) − 1 ≡ 1 ( m o d 9 ) , ( 5 ∗ 7 ∗ 9 ) ∗ ( 5 ∗ 7 ∗ 9 ) − 1 ≡ 1 ( m o d 11 ) (5*7*11)*(5*7*11)^{-1}\equiv1\pmod{9},(5*7*9)*(5*7*9)^{-1}\equiv1\pmod{11} (5711)(5711)11(mod9)(579)(579)11(mod11)
得 ( 7 ∗ 9 ∗ 11 ) − 1 = 2 , ( 5 ∗ 9 ∗ 11 ) − 1 = 3 , ( 5 ∗ 7 ∗ 11 ) − 1 = 4 , ( 5 ∗ 7 ∗ 9 ) − 1 = 8 得(7*9*11)^{-1}=2,(5*9*11)^{-1}=3,(5*7*11)^{-1}=4,(5*7*9)^{-1}=8 (7911)1=2(5911)1=3(5711)1=4(579)1=8
x = ( 1 ∗ 693 ∗ 2 + 2 ∗ 495 ∗ 3 + 3 ∗ 385 ∗ 4 + 4 ∗ 315 ∗ 8 ) ( m o d 3465 ) x=(1*693*2+2*495*3+3*385*4+4*315*8)\pmod{3465} x=(16932+24953+33854+43158)(mod3465)
得, x = 1731 得,x=1731 得,x=1731

3. 手动计算 200 0 2019 ( m o d 221 ) 。 3.手动计算2000^{2019}\pmod{221}。 3.手动计算20002019(mod221)

解: 221 = 13 ∗ 17 解:221=13*17 解:221=1317
根据费马小定理, a p − 1 ≡ 1 ( m o d p ) ,所以有 根据费马小定理,a^{p-1}\equiv1\pmod{p},所以有 根据费马小定理,ap11(modp),所以有
200 0 12 ≡ 1 ( m o d 13 ) 2000^{12}\equiv1\pmod{13} 2000121(mod13)
200 0 16 ≡ 1 ( m o d 17 ) 2000^{16}\equiv1\pmod{17} 2000161(mod17)
而 2019 ≡ 3 ( m o d 12 ) , 2019 ≡ 3 ( m o d 16 ) , 即 而2019\equiv3\pmod{12},2019\equiv3\pmod{16},即 20193(mod12)20193(mod16),
200 0 2019 ≡ 200 0 3 ( m o d 13 ) 2000^{2019}\equiv2000^{3}\pmod{13} 2000201920003(mod13)
200 0 2019 ≡ 200 0 3 ( m o d 17 ) 2000^{2019}\equiv2000^{3}\pmod{17} 2000201920003(mod17)
2000 = 2 ∗ 1 0 3 ,而 10 ( m o d 13 ) = − 3 2000=2*10^{3},而10\pmod{13}=-3 2000=2103,而10(mod13)=3
所以, 200 0 3 ( m o d 13 ) = 2 ∗ ( − 3 ) 3 ( m o d 13 ) = − 54 ( m o d 13 ) = 11 所以,2000^{3}\pmod{13}=2*(-3)^{3}\pmod{13}=-54\pmod{13}=11 所以,20003(mod13)=2(3)3(mod13)=54(mod13)=11
2000 = 2 0 2 ∗ 5 ,而 20 ( m o d 17 ) = 3 2000=20^{2}*5,而20\pmod{17}=3 2000=2025,而20(mod17)=3
200 0 3 ( m o d 17 ) = ( 3 ) 2 ∗ 5 ( m o d 17 ) = 45 ( m o d 17 ) = 11 2000^{3}\pmod{17}=(3)^{2}*5\pmod{17}=45\pmod{17}=11 20003(mod17)=(3)25(mod17)=45(mod17)=11
即 即
200 0 2019 ↔ ( 11 , 11 ) 2000^{2019}\leftrightarrow(11,11) 20002019(11,11)
200 0 2019 = 11 2000^{2019}=11 20002019=11

7. 实现一个利用 C R T 求解同余方程的程序( P y t h o n 或者 C 语言都可以)。 7.实现一个利用CRT求解同余方程的程序(Python或者C语言都可以)。 7.实现一个利用CRT求解同余方程的程序(Python或者C语言都可以)。

def egcd(a, b):
    if b == 0:
        return (a, 1, 0)
    else:
        gcd, x, y = egcd(b, a % b)
        return (gcd, y, x - (a // b) * y)

def CRT(equations):
    N = 1
    for a, m in equations:
        N *= m

    x = 0
    for a, m in equations:
        N_i = N // m
        _, s, _ = egcd(N_i,m)
        x += a * s * N_i

    return x % N

if __name__ == "__main__":
    equations = []
    n = int(input("请输入方程个数: "))
    for i in range(n):
        a = int(input("请输入 a{}: ".format(i+1)))
        m = int(input("请输入 m{}: ".format(i+1)))
        equations.append((a, m))

    result = CRT(equations)
    print("方程的解为:", result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值