我试图找到数字 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);
}
最佳答案
尝试使用 mod 计算 BigInteger
的每个数字不是很有效,因为您在此过程中进行了很多方法调用。相反,您可以通过转换为 String
并直接获取每个数字来简化。
BigInteger big = BigInteger.valueOf(2).pow(1000);
String digits = big.toString();
int sum = 0;
for(int i = 0; i < digits.length(); i++) {
int digit = (int) (digits.charAt(i) - '0');
sum = sum + digit;
}
System.out.println(sum);
关于java - 求和 BigInteger 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275068/