【发布时间】:2016-01-12 16:15:54
【问题描述】:
我有一系列 BigInteger 问题,需要使用不断增加的 BigInteger。我提出了一个循环,但这非常棘手,因为 BigIntegers 和 BigDecimals 是不可变的。
这是我正在尝试制作的程序之一的示例。这是一种尝试查找大于 Long.MAX_VALUE 且可被 2 或 3 整除的 BigInteger 的方法。
public void divisibleBy2Or3() {
BigInteger min = new BigInteger("9223372036854775808");
int j = 0;
BigInteger increment = new BigInteger("1");
BigInteger divideBy2 = new BigInteger("2");
BigInteger divideBy3 = new BigInteger("3");
while (j < 10) {
BigInteger a = min.add(increment);
BigInteger b = a.divide(divideBy2); BigInteger c = a.divide(divideBy3);
if (b.multiply(divideBy2) == a || c.multiply(divideBy3) == a) {
System.out.print(a + " ");
j++;
}
}
}
这段代码的问题是我似乎无法弄清楚如何获得我正在为循环的每次迭代测试的 BigInteger,以便在每次迭代中添加自身。我也有点不确定乘法方法是否真的适用于这种情况,因为每当我运行程序时,它都会挂起并显示一个空白控制台
【问题讨论】:
-
只需重新分配给相同的变量以更改它。你没有得到任何输出的原因是你的比较是错误的。使用
.equals而不是==。 -
为什么需要搜索这些值? 2 和 3 的倍数具有明确定义的属性,无需搜索即可生成此类值。
-
BigInteger b =new BigInteger("123"); b = b.add( BigInteger.ONE );
标签: java biginteger