文章目录
- 第十章习题
- 第一题
- 第二题
- 第三题
- 第七题
第十章习题
第一题
运 用 C R T 求 解 : x ≡ 8 ( m o d 11 ) x ≡ 3 ( m o d 19 ) 运用CRT求解:x\equiv8(mod\ 11)\ \ x\equiv3(mod\ 19) 运用CRT求解:x≡8(mod 11) x≡3(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≡(8∗19∗19−1+3∗11∗11−1)mod 11∗19
19
∗
1
9
−
1
≡
1
(
m
o
d
11
)
,
1
9
−
1
=
7
19*19^{-1}\equiv1(mod\ 11),19^{-1}=7
19∗19−1≡1(mod 11),19−1=7
11
∗
1
1
−
1
≡
1
(
m
o
d
19
)
,
1
1
−
1
=
7
11*11^{-1}\equiv1(mod\ 19),11^{-1}=7
11∗11−1≡1(mod 19),11−1=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≡(8∗19∗7+3∗11∗7)mod 11∗19≡1295(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)
运用CRT求解:x≡1(mod 5) x≡2(mod 7)
x
≡
3
(
m
o
d
9
)
x
≡
4
(
m
o
d
11
)
x\equiv3(mod\ 9)\ \ x\equiv4(mod\ 11)
x≡3(mod 9) x≡4(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∗(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)
(
7
∗
9
∗
11
)
∗
a
−
1
≡
1
(
m
o
d
5
)
,
a
−
1
=
2
(7*9*11)*a^{-1}\equiv1(mod\ 5),a^{-1}=2
(7∗9∗11)∗a−1≡1(mod 5),a−1=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
(5∗9∗11)∗b−1≡1(mod 7),b−1=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
(5∗7∗11)∗c−1≡1(mod 9),c−1=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
(5∗7∗9)∗d−1≡1(mod 11),d−1=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
x≡1∗7∗9∗11∗2+2∗5∗9∗11∗3+3∗5∗7∗11∗4+4∗5∗9∗7∗8(mod 5∗7∗9∗11)≡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=13∗17,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 13≡1112∗168+3mod 13≡113mod 13≡(−8)mod 13≡5
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 17≡1116∗126+3mod 17≡113mod 17≡(−216)mod 17≡5
(
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可以说是没什么关系,思路大致是明白了
了解了一下,确实exCRT和CRT可以说是没什么关系,思路大致是明白了
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)