我有非常大的指数,指数
e = 26959946667150639794667015087019630673637144422540572481103610249951
(225位)
但是,根据mpz_pow_ui模板如下:
void mpz_pow_ui (mpz_t ROP, mpz_t BASE, unsigned long int EXP)
我认为e不适合该功能,是否还有另一种方法可以使用GMP C++计算大指数?
最佳答案
别。如果要取幂的基本值不是-1
,0
或1
,则将占用主内存(将完全超出可用的虚拟地址空间)。如果目标是进行模幂运算(结果可以放入内存中,因为它减少了mod的一些数以适合RAM),则您需要 mpz_powm
(如果要编写“真实”加密代码,则为mpz_powm_sec
; _sec
变体可以抵御定时攻击以恢复密钥)。
GMP仅接受该函数的无符号整数的原因是,在这种情况下,任意精度指数只会导致流泪。
关于c++ - GMP mpz_pow_ui具有非常大的指数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35846737/