Baby Step Giant Step(BSGS) 低于线性时间复杂度的离散对数算法

转载请注明

目录

1.离散对数问题

2.BSGS介绍

3.必要的理论知识

3.1费马小定理

3.2第一个引理

3.3同余式有解的充要条件

3.4第二个引理

4.BSGS算法的具体内容

4.1 满足(a,c) = 1

4.1.1解的形式和通解

4.1.2具体内容

4.2不满足(a,c) = 1

         4.2.1变形

         4.2.2如法炮制

         4.2.3code

5.时间复杂度


1.离散对数问题

在数论的同余式问题中,有一类问题被叫做“离散对数问题”,它的数学表达式是  \bg_white a^x\equiv b \ (mod \ c)

其中,a,b,c是已知的,要求x(若x存在)

 

2.BSGS介绍

BSGS是 Baby Step Giant Step 算法的简称,也可以叫它北上广深算法或者叫做拔山盖世算法等,被用于在低于线性时间复杂度下解决离散对数问题

 

3.必要的理论知识

掌握BSGS,需要掌握下面的理论知识

3.1费马小定理

若 p 是质数,a 是一个整数,那么有  \bg_white a^p \equiv a \ (mod \ p) 

上面的同余式等价于 \bg_white a^{p-1} \equiv 1 \ (mod \ p)

3.2第一个引理

两个整数 a,c ,若满足 \bg_white (a,c) = 1 , 那么有  \bg_white a^x \equiv a^{x \ mod \ \phi(c)} (mod \ c)

证明:

\because (a,c) =1 

\bg_white \therefore a^{\phi(c)} \equiv 1 \ (mod \ c)  (费马小定理)

\bg_white \therefore a^{k*\phi(c)} \equiv 1 \ (mod \ c)(同幂律)

\bg_white \therefore a^{k*\phi(c)+x} \equiv a^x \ (mod \ c)

两边指数同余 \phi(c) (相当于同时乘上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值