DH算法里需要求(n^x)%p;
其中p为大素数,n跟x都是大数。
那怎样求(n^x)%p呢?
我有一篇文章里讲过思路,今天找出以前的代码,贴出来。
当然,这里的用的递归实现,改进的是y过大,循环时间复杂度过高的问题,此递归代码时间复杂度只有O(logy).
不过如果使用gmp大数库来做运算(这里数据类型为int64只是为了表达算法思想,实际应该是大数类型),无法调用函数,也就是无法递归。
我们可以模拟这段代码的递归特性,先通过对y不断/2或者-1再/2的做法,把递归y的特性存到一个栈里,然后可以读取栈里的运算特性,模拟出递归。由于此模拟算法使用的是gmo库,则不贴出来了。