CINTA第二次作业

第三章

模指数运算

迭代版

int Mod_exp(int a, int b, int m)
{
    int res = 1;
    while(b)
    {
        if(b & 1) res = res * a % m;
        a = a * a % m;
        b >>= 1;
    }
    return res;
}

递归版

int Mod_exp(int a, int b, int m)
{
    if(!b) return 1;
    int t = Mod_exp(a, b / 2, m);
    if(b & 1) return t * t * a % m;
    return t * t % m;
}

乘法逆元的求取

int Mul_inverse(int a, int m)
{
	//a模m的乘法逆元存在的充要条件是:a,m互素
	//a,m不互素说明不存在乘法逆元
    if(gcd(a, m) != 1) return 0;

	//求乘法逆元的本质是egcd
    int r1 = 1, s1 = 0, r2 = 0, s2 = 1, tm = m;
    while(m)
    {
        int q = a / m, t = a % m, tr = r1, ts = s1;
        r1 = r2, s1 = s2, a = m;
        r2 = tr - q * r1, s2 = ts - q * s1, m = t;
    }

	//答案要求正整数,原理不赘述
    while(r1 < 0) r1 += tm;
    
    return r1;
}

第四章

题1

题目:设 p = 23 p = 23 p=23 a = 3 a = 3 a=3,使用费尔马小定理计算 a 2019   m o d   p a^{2019}\bmod p a2019modp.
计算过程:
注意到 a ≢ 0 ( m o d p ) a\not\equiv 0\pmod p a0(modp) p p p 是素数,由费马小定理知: a 22 ≡ 1 ( m o d p ) a^{22}\equiv 1\pmod {p} a221(modp)
故:
a 2019 ≡ a 22 × 91 + 17 ≡ a 17 ( m o d p ) a^{2019}\equiv a^{22\times 91+17}\equiv a^{17}\pmod p a2019a22×91+17a17(modp)
接下来使用快速幂手算即可:
a 4 ≡ 81 ≡ 12 ( m o d 23 ) a^{4}\equiv81\equiv 12\pmod {23} a48112(mod23)
a 8 ≡ 1 2 2 ≡ 6 ( m o d 23 ) a^8\equiv 12^2\equiv 6\pmod {23} a81226(mod23)
a 16 ≡ 6 2 ≡ 13 ( m o d 23 ) a^{16}\equiv 6^2\equiv 13\pmod {23} a166213(mod23)
a 17 ≡ a 16 ⋅ a ≡ 13 × 3 ≡ 16 ( m o d 23 ) a^{17}\equiv a^{16} \cdot a\equiv 13 \times3\equiv 16\pmod{23} a17a16a13×316(mod23)
故答案为 16 16 16.

题5

题目:请证明 13 13 13 整除 2 70 + 3 70 2^{70}+3^{70} 270+370.
证明过程:
注意到 2 ≢ 0 ( m o d 13 ) 2\not\equiv 0\pmod {13} 20(mod13) 13 13 13 是素数,由费马小定理知: 2 12 ≡ 1 ( m o d 13 ) 2^{12}\equiv 1\pmod {13} 2121(mod13)
同理有: 3 12 ≡ 1 ( m o d 13 ) 3^{12}\equiv 1\pmod {13} 3121(mod13).
因而有:
2 70 ≡ 2 12 × 5 + 10 ≡ 2 10 ≡ 1024 ≡ 10 ( m o d 13 ) 2^{70}\equiv 2^{12\times 5+10}\equiv 2^{10}\equiv1024\equiv10\pmod {13} 270212×5+10210102410(mod13)
3 70 ≡ 3 12 × 5 + 10 ≡ 3 10 ≡ ( 3 3 ) 3 × 3 ≡ 3 ( m o d 13 ) 3^{70}\equiv3^{12\times5+10}\equiv3^{10}\equiv(3^3)^3\times 3\equiv3\pmod {13} 370312×5+10310(33)3×33(mod13)
进而:
2 70 + 3 70 ≡ 10 + 3 ≡ 0 ( m o d 13 ) 2^{70}+3^{70}\equiv 10+3\equiv0\pmod {13} 270+37010+30(mod13)
即: 13 ∣ ( 2 70 + 3 70 ) 13\mid (2^{70}+3^{70}) 13(270+370).

题6

题目:使用欧拉定理计算 2 100000   m o d   55 2^{100000}\bmod 55 2100000mod55.
计算过程:
注意到 2 2 2 55 55 55 互素,由欧拉定理知: 2 ϕ ( 55 ) ≡ 1 ( m o d 55 ) 2^{\phi(55)}\equiv 1\pmod {55} 2ϕ(55)1(mod55)
不难计算 ϕ ( 55 ) = 55 × ( 1 − 1 5 ) × ( 1 − 1 11 ) = 40 \phi(55)=55\times (1-\frac{1}{5})\times (1-\frac{1}{11})=40 ϕ(55)=55×(151)×(1111)=40
因而: 2 40 ≡ 1 ( m o d 55 ) 2^{40}\equiv 1\pmod {55} 2401(mod55)
进而有:
2 100000 ≡ 2 40 × 2500 ≡ 1 ( m o d 55 ) 2^{100000}\equiv 2^{40\times 2500}\equiv1\pmod {55} 2100000240×25001(mod55)
即答案为 1 1 1.

题8

题目:手动计算 7 1000 7^{1000} 71000 的最后两个数位等于什么?
计算过程:
题即: 7 1000 ≡ ? ( m o d 100 ) 7^{1000}\equiv ?\pmod{100} 71000?(mod100)
注意到 7 7 7 100 100 100 互素,由欧拉定理知: 7 ϕ ( 100 ) ≡ 1 ( m o d 100 ) 7^{\phi(100)}\equiv 1\pmod {100} 7ϕ(100)1(mod100)
不难计算 ϕ ( 100 ) = 100 × ( 1 − 1 2 ) × ( 1 − 1 5 ) = 40 \phi(100)=100\times (1-\frac{1}{2})\times (1-\frac{1}{5})=40 ϕ(100)=100×(121)×(151)=40
因而: 7 40 ≡ 1 ( m o d 100 ) 7^{40}\equiv 1\pmod {100} 7401(mod100)
进而有:
7 1000 ≡ 7 40 × 25 ≡ 1 ( m o d 100 ) 7^{1000}\equiv 7^{40\times 25}\equiv1\pmod {100} 71000740×251(mod100)
即答案为 1 1 1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值