2016-12-31 56 views
2

我试图解决项目欧拉#16:如何查找数字的单独数字的总和?

2^15 = 32768和它的位数之和为3 + 2 + 7 + 6 + 8 = 26。

什么是数字2^1000的数字总和?

问题看起来很简单,但如果不使用模数10的我试图解决这样的问题:

public class Main { 

    public static void main(String[] args) { 


     long number = (long) Math.pow(2,100); 

     long sum=0; 

     String number2 = String.valueOf(number); 

     char[] digits = number2.toCharArray(); 

     for (char digit : digits) { 

     sum = sum + digit; 
     } 

     System.out.println(sum); 



    } 


} 

但是它给出了一个错误的答案,我看不到我的错,是不是用这种方法解决这个问题有可能吗?

+1

2^100不适合很长时间,您需要查看BigInt类型 –

+0

但是我无法将'Math.pow(2,100)'投射到BigInteger? –

+0

是的,你不能,但pow完全是一个乘法 –

回答

3

A long无法保存该号码。您必须使用可以的数据类型重写。

查看Large Numbers in Java指针。

+0

我尝试过使用* BigInteger *,但是我不能将它转换为'Math.pow(2,100)' –

+2

您不能为此使用'Math.pow'。看到http://stackoverflow.com/q/4582277/53897 –

+0

啊我看到了,非常感谢你! –