编程题
一、模指数运算函数
代码如下:
int Mod_Exp(int a, int b, int m)
{
int res = 1;
while (b)
{
if (b & 1) {
res = (res * a) % m;
}
b >>= 1;
a = a * a % m;
}
return res;
}
二、求乘法逆元函数
代码如下:
def Mul_Inverse(a,m):
r0,r1,s0,s1 = 1,0,0,1
while(m):
q,a,m = a/m,m,a%m
r0,r1 = r1,r0 - q*r1
s0,s1 = s1,s0 - q*s1
return r0
计算题
第一题
根据费马小定理有,
3
2019
≡
3
91
∗
(
23
−
1
)
+
17
≡
3
17
(
m
o
d
23
)
≡
16
3^{2019}\equiv3^{91*{(23-1)}+17}\equiv3^{17}(mod\ 23)\equiv16
32019≡391∗(23−1)+17≡317(mod 23)≡16
第五题
根据费马小定理,
(
2
70
+
3
70
)
m
o
d
13
≡
(
(
2
70
m
o
d
13
)
+
(
3
70
m
o
d
13
)
)
m
o
d
13
≡
(
(
2
(
13
−
1
)
∗
5
+
10
m
o
d
13
)
+
(
3
(
13
−
1
)
∗
5
+
10
m
o
d
13
)
)
m
o
d
13
≡
(
(
2
10
m
o
d
13
)
+
(
3
10
m
o
d
13
)
)
m
o
d
13
≡
(
10
+
3
)
m
o
d
13
≡
0
(2^{70}+3^{70})\ mod\ 13\equiv((2^{70}\ mod\ 13)+(3^{70}\ mod\ 13))\ mod\ 13\equiv((2^{(13-1)*5+10}\ mod\ 13)+(3^{(13-1)*5+10}\ mod\ 13))mod\ 13\equiv((2^{10}mod\ 13)+(3^{10}mod\ 13))mod\ 13\equiv(10+3)mod\ 13\equiv0
(270+370) mod 13≡((270 mod 13)+(370 mod 13)) mod 13≡((2(13−1)∗5+10 mod 13)+(3(13−1)∗5+10 mod 13))mod 13≡((210mod 13)+(310mod 13))mod 13≡(10+3)mod 13≡0
即证得,
13
∣
2
70
+
3
70
13|2^{70}+3^{70}
13∣270+370
第六题
根据欧拉定理,
φ
(
55
)
=
φ
(
5
)
∗
φ
(
11
)
=
4
∗
10
=
40
根据欧拉定理,\varphi(55)=\varphi(5)*\varphi(11)=4*10=40
根据欧拉定理,φ(55)=φ(5)∗φ(11)=4∗10=40
g
c
d
(
2
,
55
)
=
1
gcd(2,55)=1
gcd(2,55)=1
2
100000
m
o
d
55
≡
2
40
∗
2500
m
o
d
55
≡
(
2
40
m
o
d
55
)
2500
m
o
d
55
≡
1
2^{100000}mod\ 55\equiv2^{40*2500}mod\ 55\equiv(2^{40}mod\ 55)^{2500}mod\ 55\equiv1
2100000mod 55≡240∗2500mod 55≡(240mod 55)2500mod 55≡1
第八题
题目等价于求
:
7
1000
m
o
d
100
的值
题目等价于求:7^{1000}mod\ 100的值
题目等价于求:71000mod 100的值
g
c
d
(
7
,
100
)
=
1
gcd(7,100)=1
gcd(7,100)=1
故,
7
φ
(
100
)
≡
1
m
o
d
100
故,7^{\varphi(100)}\equiv1\ mod\ 100
故,7φ(100)≡1 mod 100
φ
(
100
)
=
φ
(
4
)
∗
φ
(
25
)
=
2
∗
20
=
40
\varphi(100)=\varphi(4)*\varphi(25)=2*20=40
φ(100)=φ(4)∗φ(25)=2∗20=40
即
,
7
40
≡
1
m
o
d
100
即,7^{40}\equiv1\ mod\ 100
即,740≡1 mod 100
7
1000
m
o
d
100
=
7
40
∗
25
m
o
d
100
=
(
7
40
m
o
d
100
)
25
m
o
d
100
=
1
7^{1000}mod\ 100=7^{40*25}mod\ 100=(7^{40}mod\ 100)^{25}mod\ 100=1
71000mod 100=740∗25mod 100=(740mod 100)25mod 100=1
所以,
7
1000
m
o
d
100
的最后两位为
01
所以,7^{1000}mod\ 100的最后两位为01
所以,71000mod 100的最后两位为01