DH应用-求余算法改进

DH算法里需要求(n^x)%p;

其中p为大素数,n跟x都是大数。

 

那怎样求(n^x)%p呢?

我有一篇文章里讲过思路,今天找出以前的代码,贴出来。

 

 

当然,这里的用的递归实现,改进的是y过大,循环时间复杂度过高的问题,此递归代码时间复杂度只有O(logy).

不过如果使用gmp大数库来做运算(这里数据类型为int64只是为了表达算法思想,实际应该是大数类型),无法调用函数,也就是无法递归。

我们可以模拟这段代码的递归特性,先通过对y不断/2或者-1再/2的做法,把递归y的特性存到一个栈里,然后可以读取栈里的运算特性,模拟出递归。由于此模拟算法使用的是gmo库,则不贴出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值