首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GNU mpz_powm()不含mod

GNU mpz_powm()不含mod
EN

Stack Overflow用户
提问于 2013-08-09 15:09:00
回答 2查看 4.5K关注 0票数 1

GNU GMP提供了一个名为mpz_powm(rop, base, exp, mod)的函数,它允许我用另一个非常大的整数值来驱动一个非常大的整数值。这个函数也迫使我用第四个参数来调整结果。这就是"m“在mpz_powm中的意思。没有没有mod参数的函数的原因可能是为了避免非常大的结果,这些结果可能会填满您的整个内存,比如:2^(2^64)。我想知道是否有可能在不指定mod参数的情况下使用该函数,只需冒着达到内存限制的风险。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-09 15:13:40

你在找mpz_pow_ui ()。如果您希望传递的参数不适合于一个单词,那么结果无论如何也不会在内存中(除了琐碎的情况外):

代码语言:javascript
运行
复制
void mpz_pow_ui (mpz_t ROP, mpz_t BASE, unsigned long int EXP)
票数 3
EN

Stack Overflow用户

发布于 2015-09-03 18:52:40

如果您不想调整您的答案,您将需要使用mpz_pow_ui。但是,由于使用大型mpz_t进行幂运算会创建一个不适合内存的整数,所以指数必须是unsigned long int

因此,只需转换指数,然后使用以下函数:

mpz_pow_ui (rop, base, mpz_get_ui(exp))

但是,如果指数大于ULONG_MAX (通常为2^32-1),则会出现溢出错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18149940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档