java - 求和 BigInteger 数字

标签 java sum biginteger digits

我试图找到数字 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/

相关文章:

java - 通过引用类避免访问静态字段?

java - 如何将 ArrayList<>() 中的字符串解析为 Map<String, String>

mysql - 如何将 MySQL SUM() 函数添加到此查询?

java - RSA key 生成的 BigInteger 实现

java - 将任何类型的 ArrayList 传递给方法

java - 向 Wicket 实现 javascript 事件

mysql - mysql 中的总和作为一列

MYSQL INSERT IF SUM > CONSTANT

java - 如何将字符串转换为 BigInteger?

fft - 如何使用 FFT 将一个非常大的整数从一个基数/基数转换为另一个?