【问题标题】:How to handle big data element in c++?如何在 C++ 中处理大数据元素?
【发布时间】:2012-08-15 14:40:18
【问题描述】:

我想将pow(2.0,(n-8))的返回值除以86399。 问题是10 <= n <= 100000000

如何处理这么大的返回值?

我在 Ubuntu 11.10 64 位,使用 C++ 4.0.0-8

【问题讨论】:

  • 请不要对我们大喊大叫 :)

标签: c++ pow


【解决方案1】:

这个讨论应该回答你的问题Modular Exponentiation for high numbers in C++

对于这么大的数字,你必须做一些聪明的事情。如果没有 bigint 库,你就无法以任何合理的方式天真地表示这个完整的数字,即便如此,它对于蛮力来说真的太大了。该数字本身将占用数十兆字节。

【讨论】:

  • java的biginteger类是如何处理大整数的?
【解决方案2】:

一个非常简单的方法是使用 GMP -- http://gmplib.org/

【讨论】:

    【解决方案3】:

    除非你使用大数字库,否则你不能。 64 位不能容纳那么大的数字。即便如此,也可能需要一段时间。 2^(86392) 中有大约 26000 个数字。

    如果你只想得到一个模数,有一些很好的算法。见http://en.wikipedia.org/wiki/Modular_exponentiation

    如果您还想尝试 bignums,请查看 http://gmplib.org/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多