我试图找到数字2^1000的各位数字之和,我正在使用Java BigInteger类来实现。然而,我无法实现它。最终,我用以下代码得到了0(零)。可能是什么问题?
谢谢...
在Kon的帮助下,我解决了问题,但这次我得到了错误的结果。有人能看出算法的问题吗?
public static void main(String []args) throws Exception
{
BigInteger big = BigInteger.valueOf(2).pow(1000);
BigInteger big2 = BigInteger.valueOf(0);
//System.out.println(big);
for(long i = 1; i<283; i++)
{
big2 = big2.add(big.mod(BigInteger.valueOf((long) Math.pow(10,i))).divide(BigInteger.valueOf((long)Math.pow(10,i-1))));
}
System.out.println(big2);
}
long
的极限,这是你在计算的中间步骤中使用的。在第20位数字之后,在a.divide(b)
部分的a
和b
操作数停止改变。尝试进行调试或打印出单独的结果,你就会明白我的意思。 - Warlord