1.
运用
C
R
T
求解:
1.运用CRT求解:
1.运用CRT求解:
x
≡
8
(
m
o
d
11
)
x\equiv8\pmod{11}
x≡8(mod11)
x
≡
3
(
m
o
d
19
)
x\equiv3\pmod{19}
x≡3(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=(8∗19∗19−1+3∗11∗11−1)(mod11∗19)
其中,
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},得
其中,19∗19−1≡1(mod11),11∗11−1≡1(mod19),得
1
9
−
1
=
7
,
1
1
−
1
=
7
19^{-1}=7,11^{-1}=7
19−1=7,11−1=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=(8∗19∗7+3∗11∗7)(mod11∗19)=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}
x≡1(mod5)
x
≡
2
(
m
o
d
7
)
x\equiv2\pmod{7}
x≡2(mod7)
x
≡
3
(
m
o
d
9
)
x\equiv3\pmod{9}
x≡3(mod9)
x
≡
4
(
m
o
d
11
)
x\equiv4\pmod{11}
x≡4(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∗(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)(mod5∗7∗9∗11)
其中,
(
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},
其中,(7∗9∗11)∗(7∗9∗11)−1≡1(mod5),(5∗9∗11)∗(5∗9∗11)−1≡1(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}
(5∗7∗11)∗(5∗7∗11)−1≡1(mod9),(5∗7∗9)∗(5∗7∗9)−1≡1(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
得(7∗9∗11)−1=2,(5∗9∗11)−1=3,(5∗7∗11)−1=4,(5∗7∗9)−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=(1∗693∗2+2∗495∗3+3∗385∗4+4∗315∗8)(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=13∗17
根据费马小定理,
a
p
−
1
≡
1
(
m
o
d
p
)
,所以有
根据费马小定理,a^{p-1}\equiv1\pmod{p},所以有
根据费马小定理,ap−1≡1(modp),所以有
200
0
12
≡
1
(
m
o
d
13
)
2000^{12}\equiv1\pmod{13}
200012≡1(mod13)
200
0
16
≡
1
(
m
o
d
17
)
2000^{16}\equiv1\pmod{17}
200016≡1(mod17)
而
2019
≡
3
(
m
o
d
12
)
,
2019
≡
3
(
m
o
d
16
)
,
即
而2019\equiv3\pmod{12},2019\equiv3\pmod{16},即
而2019≡3(mod12),2019≡3(mod16),即
200
0
2019
≡
200
0
3
(
m
o
d
13
)
2000^{2019}\equiv2000^{3}\pmod{13}
20002019≡20003(mod13)
200
0
2019
≡
200
0
3
(
m
o
d
17
)
2000^{2019}\equiv2000^{3}\pmod{17}
20002019≡20003(mod17)
2000
=
2
∗
1
0
3
,而
10
(
m
o
d
13
)
=
−
3
2000=2*10^{3},而10\pmod{13}=-3
2000=2∗103,而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=202∗5,而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)2∗5(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)