在Java中操纵BigIntegers

时间:2014-12-21 21:29:20

标签: java biginteger

我一直在研究一个java程序,我需要在其中计算并将巨大的值存储到数组中。到目前为止,我通过将输入的变量插入到指数函数中来获得值:

Math.pow(7,x);

我决定将值存储到BigInteger数组中,但我不知道如何使用BigInteger提供的提供的构造函数存储这些常规操作值。对于'x'值,我实际上使用了相当大的数字,它们可以存储长度可以存储的指定值。我似乎完全围绕着我想到的每一个解决方案......只是这样做:

bigArray[i] = new BigInteger((long)Math.pow(7,x));

不起作用,因为我处理大于100的值为x。我该怎么办?

3 个答案:

答案 0 :(得分:9)

待办事项

BigInteger bi = BigInteger.valueOf(7).pow(x);

答案 1 :(得分:3)

已经提供了aioobe的答案,建议使用BigInteger.valueOf是正确的,但我想提供一些额外的信息。

正如他所说:

BigInteger bi = BigInteger.valueOf(7).pow(x);

但是让我们看一下关于" valueOf()"的Java文档。方法:

"这个"静态工厂方法"优先于(长)构造函数提供,因为它允许重用经常使用的BigIntegers。"

请参阅:http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#valueOf(long)

答案 2 :(得分:0)

将字符串作为BigInteger构造函数的参数提供,例如

BigInteger bigInteger = new BigInteger("1000000000000000000000000000000000000000000000000000000000000000000");

在你的情况下

 BigInteger bigInteger = new BigInteger("7").pow(x);