数论概论读书笔记 17.计算模m的k次根

博客围绕计算模m的k次根展开,提到快速幂可求一个数模m的k次幂,而计算k次根若枚举值在m很大时耗时久。介绍了求解同余式的方法,强调欧拉定理的应用,总结了计算模m的k次根原理,指出算法瓶颈是质因数分解,还提及相关密码设计基础。

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

计算模m的k次根

快速幂可以在log时间内求得一个数模m的k次幂

那么反过来呢? 即计算模m的k次根

xkb mod mxk≡b mod m

已知k,b,mk,b,m,计算xx的值。

如果我们枚举x的值,当m很大时,会耗费很长时间。

那么如何快速求解呢?

比如现在要求解同余式

x131758(mod 1073)x131≡758(mod 1073)

先求出φ(1073)=1008φ(1073)=1008, 构造一个不定方程131x1008y=1131x−1008y=1

求解最小的正整数xx,得x=731,即131731=1008y+1131∗731=1008∗y+1

将(2)式两边做731幂得,xx1008y=(x131)731758731(mod 1073)x∗x1008y=(x131)731≡758731(mod 1073)

x1008y1 (mod 1073)x1008y≡1 (mod 1073) 这里x与1073要互质,即x,b与m要互质。

所以x758731 (mod 1073)x≡758731 (mod 1073)

可见欧拉定理在这里的应用很重要。

下面总结一下:

算法17.1 (计算模m的k次根原理) 设b,k,m是已知整数,满足

gcd(b,m)=1gcd(k,φ(m))=1gcd(b,m)=1与gcd(k,φ(m))=1

求解步骤如下:
  • 求解φ(m)φ(m)
  • 求满足kuφ(m)v=1ku−φ(m)v=1的正整数uu
  • 用快速幂计算bu(mod m) 所得值给出解xx

此算法的瓶颈在于第一步,即对m的质因数分解,复杂度是O(n)O(n)

当然也有Pollard_RhoPollard_Rho质因数分解算法

而大整数难以分解的特性,是许多密码设计的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值