密码学--数学基础(公式推导及原理证明)

本文介绍了密码学中的数学基础,包括欧几里得算法及其扩展,用于解决最大公约数和模逆运算的问题。还讨论了欧拉公式在数论中的应用,并提到了利用扩展欧几里得算法求解线性同余方程。同时,文中通过力扣刷题展示了这些算法的实际应用,如在LeetCode题目287、1175和1071中的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

ax mod b=c a^x ~ mod ~ b = c ax mod b=c
已知a,b互质(两个数的最大公约数为1),给出a,b,c三个正整数,求x的自小正整数解。

欧几里得算法
概念:

整数a,b的最大公约数一般表示为 gcd(a,b)
终极奥义:gcd(a,b) = gcd(b,a%b)=> 将大规模的问题转变成小规模的问题 ,当转变成gcd(c,0)时,c即为最大公约数

 	1 当a>b,缩小问题规模的作用
 	2  当a<b,相当于a和b的位置进行对调
//欧几里得算法就是将较大规模的问题转变成较小规模的问题
int gcd(int a,int b){
   
   //gcd求最大公约数的
    cout<<"gcd("<<a<<","<<b<<")=";
    if(b) return gcd(b,a%b);
    return a;//此时b=0 直接返回a(最大公约数)
}
int main(){
   
   
    int a,b;
    while(cin>>a>>b){
   
   
        cout<<gcd(a,b)<<endl;
    }
    return 0;
}
证明:

1、b和a%b的最大公约数,是a和b的公约数

设b,a%b的最大公约数c
b = k1*c
a%b = k2*c
a-k*b = k2*c => a = k2*c+k*b => a = k2*c+k*k1*c
a = (k2+k*k1)*c
b = k1*c
及证:得出结论b和a%b的最大公约数也是a和b的公约数

2、b和a%b的最大公约数也是a和b的最大公约数

a = (x+y*k)*c
b = y*c
定理:假设a和b的最大公约数为c 那么x+y*k和y的最大公约数为1
反正法:假设c不是a和b的最大公约数=>gcd(x+y*k,y)=d | d!=1
x+k*y = n*d
y = m*d
x = n*d-k*y = n*d-k*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值