在Java中操作大整数

3

我一直在开发一个Java程序,需要计算并将巨大的值存储到数组中。目前,我通过将输入的变量代入指数函数来获取该值:

Math.pow(7,x);

我决定将值存储到BigInteger数组中,但我不知道如何使用BigInteger提供的构造函数来存储这些经常操作的值。对于“x”值,我实际上正在使用相当大的数字,超出了long可以存储的指定值。无论我想到什么解决方案,似乎都是个死循环...只需执行:

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

无法使用,因为我正在处理大于100的值作为x。我该怎么办?

3个回答

9

Do

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

3

感谢您的帮助!额外的信息也很有用。 - Drew Erikson

0
将字符串作为 BigInteger 构造函数的参数提供,例如:
BigInteger bigInteger = new BigInteger("1000000000000000000000000000000000000000000000000000000000000000000");

就您的情况而言

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

3
大多数踩票是在之前的答案修订版上,该版本甚至没有包括BigInteger :: pow。尽管如此,我仍然不明白为什么你建议使用基于字符串的构造函数。 - aioobe
2
也许吧,但如果你对某个帖子进行了负评,留下一段时间看看作者是否改进了帖子是常见的礼貌做法,这也是在这里发生的事情。 - Dawood ibn Kareem
@aioobe 我传递字符串是因为 long l = 1000000000000000000000000000000000000000000000000; 连编译都过不了,但是 BigInteger bigInteger = new BigInteger("1000000000000000000000000000000000000000000000000").pow(10); 却能完美运行。 - sol4me
但是楼主并没有提到大型基数的问题。他甚至以“7”作为例子。问题在于当他改变“x”时,他声称它会高达“100”。这些数字都不接近需要基于字符串的构造函数。 - aioobe
这是非常正确的。String构造函数也可以使用,但为了效率起见,只需使用“BigInteger.valueOf()”构造函数即可正常工作。感谢大家的帮助! - Drew Erikson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接