CINTA第六次作业

文章目录

  • 第十章习题
    • 第一题
    • 第二题
    • 第三题
    • 第七题

第十章习题

第一题

运 用 C R T 求 解 : x ≡ 8 ( m o d   11 )    x ≡ 3 ( m o d   19 ) 运用CRT求解:x\equiv8(mod\ 11)\ \ x\equiv3(mod\ 19) CRTx8(mod 11)  x3(mod 19)

g c d ( 11 , 19 ) = 1 , x ≡ ( 8 ∗ 19 ∗ 1 9 − 1 + 3 ∗ 11 ∗ 1 1 − 1 ) m o d   11 ∗ 19 gcd(11,19)=1,x\equiv(8*19*19^{-1}+3*11*11^{-1})mod\ 11*19 gcd(11,19)=1,x(819191+311111)mod 1119
19 ∗ 1 9 − 1 ≡ 1 ( m o d   11 ) , 1 9 − 1 = 7 19*19^{-1}\equiv1(mod\ 11),19^{-1}=7 191911(mod 11),191=7
11 ∗ 1 1 − 1 ≡ 1 ( m o d   19 ) , 1 1 − 1 = 7 11*11^{-1}\equiv1(mod\ 19),11^{-1}=7 111111(mod 19),111=7
x ≡ ( 8 ∗ 19 ∗ 7 + 3 ∗ 11 ∗ 7 ) m o d   11 ∗ 19 ≡ 1295 ( m o d   209 ) ≡ 41 x\equiv(8*19*7+3*11*7)mod\ 11*19\equiv1295(mod\ 209)\equiv41 x(8197+3117)mod 11191295(mod 209)41
故 , x = 41 , 经 验 证 x = 41 为 同 余 方 程 组 的 解 故,x=41,经验证x=41为同余方程组的解 ,x=41,x=41


第二题

运 用 C R T 求 解 : x ≡ 1 ( m o d   5 )    x ≡ 2 ( m o d   7 ) 运用CRT求解:x\equiv1(mod\ 5)\ \ x\equiv2(mod\ 7) CRTx1(mod 5)  x2(mod 7)
x ≡ 3 ( m o d   9 )    x ≡ 4 ( m o d   11 ) x\equiv3(mod\ 9)\ \ x\equiv4(mod\ 11) x3(mod 9)  x4(mod 11)

5 , 7 , 9 , 11 两 两 互 素 5,7,9,11两两互素 5,7,9,11
x ≡ ( 1 ∗ ( 7 ∗ 9 ∗ 11 ) ∗ a − 1 + 2 ∗ ( 5 ∗ 9 ∗ 11 ) ∗ b − 1 + 3 ∗ ( 5 ∗ 7 ∗ 11 ) ∗ c − 1 + 4 ∗ ( 5 ∗ 7 ∗ 9 ) ∗ d − 1 ) m o d   ( 5 ∗ 7 ∗ 9 ∗ 11 ) x\equiv(1*(7*9*11)*a^{-1}+2*(5*9*11)*b^{-1}+3*(5*7*11)*c^{-1}+4*(5*7*9)*d^{-1})mod\ (5*7*9*11) x(1(7911)a1+2(5911)b1+3(5711)c1+4(579)d1)mod (57911)
( 7 ∗ 9 ∗ 11 ) ∗ a − 1 ≡ 1 ( m o d   5 ) , a − 1 = 2 (7*9*11)*a^{-1}\equiv1(mod\ 5),a^{-1}=2 (7911)a11(mod 5),a1=2
( 5 ∗ 9 ∗ 11 ) ∗ b − 1 ≡ 1 ( m o d   7 ) , b − 1 = 3 (5*9*11)*b^{-1}\equiv1(mod\ 7),b^{-1}=3 (5911)b11(mod 7),b1=3
( 5 ∗ 7 ∗ 11 ) ∗ c − 1 ≡ 1 ( m o d   9 ) , c − 1 = 4 (5*7*11)*c^{-1}\equiv1(mod\ 9),c^{-1}=4 (5711)c11(mod 9),c1=4
( 5 ∗ 7 ∗ 9 ) ∗ d − 1 ≡ 1 ( m o d   11 ) , d − 1 = 8 (5*7*9)*d^{-1}\equiv1(mod\ 11),d^{-1}=8 (579)d11(mod 11),d1=8
x ≡ 1 ∗ 7 ∗ 9 ∗ 11 ∗ 2 + 2 ∗ 5 ∗ 9 ∗ 11 ∗ 3 + 3 ∗ 5 ∗ 7 ∗ 11 ∗ 4 + 4 ∗ 5 ∗ 9 ∗ 7 ∗ 8 ( m o d   5 ∗ 7 ∗ 9 ∗ 11 ) ≡ 1731 x\equiv1*7*9*11*2+2*5*9*11*3+3*5*7*11*4+4*5*9*7*8(mod\ 5*7*9*11)\equiv1731 x179112+259113+357114+45978(mod 57911)1731
故 , x = 1731 , 经 验 证 x = 1731 为 同 余 方 程 组 的 解 故,x=1731,经验证x=1731为同余方程组的解 ,x=1731,x=1731


第三题

手动计算 200 0 2019 ( m o d   221 ) 2000^{2019}(mod\ 221) 20002019(mod 221)

221 = 13 ∗ 17 , g c d ( 13 , 17 ) = 1 221=13*17,gcd(13,17)=1 221=1317,gcd(13,17)=1
2000 ↔ ( 11 , 11 ) 2000\leftrightarrow(11,11) 2000(11,11)
( 11 , 11 ) 2019 = ( [ 1 1 2019 m o d   13 ] , [ 1 1 2019 m o d   17 ] ) (11,11)^{2019}=([11^{2019}mod\ 13],[11^{2019}mod\ 17]) (11,11)2019=([112019mod 13],[112019mod 17])
运 用 费 马 小 定 理 , 1 1 2019 m o d   13 ≡ 1 1 12 ∗ 168 + 3 m o d   13 ≡ 1 1 3 m o d   13 ≡ ( − 8 ) m o d   13 ≡ 5 运用费马小定理,11^{2019}mod\ 13\equiv11^{12*168+3}mod\ 13\equiv11^{3}mod\ 13\equiv(-8)mod\ 13\equiv5 112019mod 131112168+3mod 13113mod 13(8)mod 135
1 1 2019 m o d   17 ≡ 1 1 16 ∗ 126 + 3 m o d   17 ≡ 1 1 3 m o d   17 ≡ ( − 216 ) m o d   17 ≡ 5 11^{2019}mod\ 17\equiv11^{16*126+3}mod\ 17\equiv11^{3}mod\ 17\equiv(-216)mod\ 17\equiv5 112019mod 171116126+3mod 17113mod 17(216)mod 175
( 11 , 11 ) 2019 = ( 5 , 5 ) (11,11)^{2019}=(5,5) (11,11)2019=(5,5)
所 以 , 200 0 2019 ( m o d   221 ) = 5 所以,2000^{2019}(mod\ 221)=5 20002019(mod 221)=5
P S : 200 0 2019 ( m o d   221 ) 不 能 运 用 费 马 小 定 理 , 因 为 221 不 是 素 数 PS:2000^{2019}(mod\ 221)不能运用费马小定理,因为221不是素数 PS:20002019(mod 221)221


第七题

实现一个利用CRT求解同余方程的程序

运 用 拓 展 欧 几 里 得 算 法 求 逆 元 运用拓展欧几里得算法求逆元
前 段 时 间 做 极 客 大 挑 战 2023 的 密 码 题 , 发 现 了 一 道 拓 展 中 国 剩 余 定 理 的 解 法 前段时间做极客大挑战2023的密码题,发现了一道拓展中国剩余定理的解法 2023
了 解 了 一 下 , 确 实 e x C R T 和 C R T 可 以 说 是 没 什 么 关 系 , 思 路 大 致 是 明 白 了 了解了一下,确实exCRT和CRT可以说是没什么关系,思路大致是明白了 exCRTCRT

def exgcd(a, b):
    if b == 0:
        return 1, 0, a
    x, y, q = exgcd(b, a % b)
    x, y = y, (x - a // b * y)
    return x, y, q


def CRT(a, n):
    sum = 0
    prod = 1
    for n_i in n:
        prod *= n_i
    for a_i, n_i in zip(a, n):
        p = prod // n_i
        sum += a_i * p * exgcd(p, n_i)[0]
    return int(sum % prod)


def exCRT(a, m, n):     # 模数m,余数a,组数n
    if n == 1:
        if m[0] > a[0]:
            return a[0]
        else:
            return -1
    for i in range(n):
        if m[i] <= a[i]:
            return -1
        x, y, d = exgcd(m[0], m[i])
        if (a[i] - a[0]) % d != 0:
            return -1
        t = m[i] // d
        x = (a[i] - a[0]) // d * x % t
        a[0] = x * m[0] + a[0]
        m[0] = m[0] * m[i] // d
        a[0] = (a[0] % m[0] + m[0]) % m[0]
    return a[0]


# x = a_i mod n_i
a0 = [1, 2, 3, 4]
n0 = [5, 7, 9, 11]
a1 = [1, 1, 4]
n1 = [3, 6, 7]
ans0 = CRT(a0, n0)
ans1 = CRT(a1, n1)
ans2 = exCRT(a0, n0, 4)
ans3 = exCRT(a1, n1, 3)
print("运用CRT解同余方程:")
print("模数互素,x =", ans0)
print("(x此时是错误的)模数不互素,x =", ans1)
print("\n运用exCRT解同余方程:")
print("模数互素,x =", ans2)
print("模数不互素,x =", ans3)

CINTA第六次作业_第1张图片


你可能感兴趣的:(密码学,python,学习)