CINTA第二次作业

CINTA第二次作业

  1. Mod_Exp函数
#include<stdio.h>

int mod_exp(int a,int b,int m){
    if(b==0){
        return 1;
    }
    else if(b%2==0){
        b=b>>1;
        return mod_exp(a*a,b,m);
    }
    else{
        return (a*mod_exp(a,b-1,m))%m;
    }
}

int main(){
    int a,b,m,res;
    while(scanf("%d%d%d",&a,&b,&m))    
      printf("%d\n",mod_exp(a,b,m));
    return 0;
}
  1. 求解乘法逆元
#include<stdio.h>

int mul_inverse(int a,int m){
    int Matrix[2][3]={{1,0,a},{0,1,m}};
    while(Matrix[0][2]!=1){
        int times=Matrix[0][2]/Matrix[1][2],temp[3];
        for(int i=0;i<3;i++){
            temp[i]=Matrix[1][i];
            Matrix[1][i]=Matrix[0][i]-Matrix[1][i]*times;
            Matrix[0][i]=temp[i];
        }        
    }
    while(Matrix[0][0]<0){
        Matrix[0][0]+=m;
    }
    return Matrix[0][0];
}

int main(){
    int a,m;
    while(scanf("%d%d",&a,&m)){
        printf("%d\n",mul_inverse(a,m));
    }
    return 0;
}
  1. 第四章习题:1
    3 2019 m o d    23 = 3 22 ∗ 91 + 17 m o d    23 = 1 ∗ 3 17 m o d    23 = 8 1 4 ∗ 3 m o d    23 = 1 2 4 ∗ 3 m o d    23 = 6 2 ∗ 3 m o d    23 = 16 3^{2019}\mod23 =3^{22*91+17}\mod 23 \\=1*3^{17}\mod 23=81^4*3 \mod 23 \\= 12^4*3\mod23=6^2*3\mod23=16 32019mod23=32291+17mod23=1317mod23=8143mod23=1243mod23=623mod23=16
  2. 第四章习题:5
    2 70 ≡ 2 17 ∗ 4 + 2 m o d    13 ≡ 3 17 ∗ 4 m o d    13 3 70 ≡ 3 17 ∗ 4 + 2 m o d    13 ≡ 3 17 ∗ 9 m o d    13 2 70 + 3 70 ≡ 3 17 ∗ 4 + 3 17 ∗ 9 m o d    13 ≡ 0 m o d    13 2^{70}\equiv2^{17*4+2}\mod13 \\\equiv3^{17}*4\mod 13 \\3^{70}\equiv3^{17*4+2}\mod13 \\\equiv3^{17}*9\mod13 \\ 2^{70}+3^{70}\equiv3^{17}*4+3^{17}*9 \mod13\\\equiv0\mod13 2702174+2mod133174mod133703174+2mod133179mod13270+3703174+3179mod130mod13
  3. 第四章习题:6
    ϕ ( 55 ) = ϕ ( 5 ) ∗ ϕ ( 11 ) = 40 2 100000 ≡ 2 40 ∗ 2500 m o d    55 ≡ 1 m o d    55 \phi{(55)}=\phi{(5)}*\phi{(11)}=40\\ 2^{100000}\equiv2^{40*2500}\mod55\equiv1\mod55 ϕ(55)=ϕ(5)ϕ(11)=4021000002402500mod551mod55
  4. 第四章习题:8
    ϕ ( 100 ) = ϕ ( 2 2 ) ∗ ϕ ( 5 2 ) = 2 ∗ 20 = 40 7 1000 ≡ 7 40 ∗ 25 m o d    100 = 1 所以最后两位数是 01 \phi{(100)}=\phi{(2^2)*\phi{(5^2)}}=2*20=40\\7^{1000}\equiv7^{40*25}\mod100=1\\所以最后两位数是01 ϕ(100)=ϕ(22)ϕ(52)=220=407100074025mod100=1所以最后两位数是01
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值