下面的代码计算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);
}
答案 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]);
}