如何计算高于限制的数字,并使用BigInteger

时间:2018-08-27 14:49:55

标签: java biginteger

下面的代码计算2 ^ 15的数字总和。如果将循环条件更改为15,则d2变为2 ^ 16。 ->我要2 ^ 15。 然后将其更改为999,位数之和不匹配。 (总数:1189)

还有另一种方法吗?

public void go()
{           
    int sum = 0;
    BigInteger d2 = BigInteger.ONE.add(BigInteger.ONE);
    BigInteger two = d2;

    for(int i = 0; i < 14; i++)
    {
        System.out.println(d2);
        d2 = d2.multiply(two);
    }

    System.out.println("\n" + d2);

    double val = d2.doubleValue();
    double temp = val;
    while(val > 0)
    {
        temp = val % 10;
        val /= 10;
        sum += temp;
        System.out.println(temp);
    }

    System.out.println("Sum: " + sum);

}

1 个答案:

答案 0 :(得分:1)

当您需要BigInteger.divideAndRemainder时,切换到double来计算数字总和。

您会得到类似的东西:

temp = d2;

while (temp.compareTo(BigInteger.ZERO) > 0) {           
    BigInteger[] divideAndRemainder = temp.divideAndRemainder(BigInteger.valueOf(10));
    temp = divideAndRemainder[0];
    sum = sum.add(divideAndRemainder[1]);
}