如何处理c ++中的大数据元素?

时间:2012-08-20 08:54:32

标签: c++ pow

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

如何处理如此大的回报值?

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

3 个答案:

答案 0 :(得分:4)

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

如果你想获得一个模数,那么有一些很好的算法。请参阅http://en.wikipedia.org/wiki/Modular_exponentiation

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

此讨论应该回答您的问题Modular Exponentiation for high numbers in C++

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