2016-12-31 57 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

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