【问题标题】:multiplication limit of integers for GMP libraryGMP 库的整数乘法限制
【发布时间】:2014-11-06 01:54:34
【问题描述】:

我试图使用 GMP 库中的 mpz_mul 函数将两个非常大的 mpz_ts 相乘,每个 2^(10*2^22) bits

没有分段错误,乘法成功通过。但是,当我将乘法结果输出到文件时,我观察到的只是一串尾随零。

有什么办法可以克服这个限制吗?

【问题讨论】:

  • 如何打印到文件?您只使用 gmp 函数,对吗?能贴出代码就更好了!!!
  • 我只是使用 gmp_fprintf 将结果输出到 GMP 中的文件。 @Arpit
  • 除非您发布代码,否则我不能这样告诉您。尝试在控制台上打印或尝试其他值。调试它。
  • 等一下,多少位? 2^(10*2^22) 是 2^41943040。我希望这不是你有多少位。 (更现实地说,我猜你有两个 42MBit 的数字......)
  • 你是什么意思,尾随零?如果任何地方都有 1,那么这个数字只能被 2 的大幂整除。

标签: c integer multiplication gmp iec10967


【解决方案1】:

bn lib 怎么样(这个库对任意大小的整数执行算术运算)?!您可以使用 bn 库并将结果转换为 GMP 的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2013-09-12
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多