私はプロジェクトオイラーの問題20を解決しようとしてきました:
n!n(n 1)... 3 * 2 * 1を意味します。たとえば、10!= 10 * 9 ... 3 * 2 * 1 = 3628800、および数字の10の桁の合計!は3+6 + 2 + 8 + 8 + 0 + 0 = 27です。数字の100の桁の合計を見つけてください!
これは私がこれまでに思いついたものです。このコードですでに正解(648)を取得しましたが、コードが無限ループであるため、少しOCを取得しました。結果がwhileループ内で0になった後、それは停止しませんでした。誰かが私がこれを修正するのを手伝ってもらえますか?
public static BigInteger problem20(int max){
BigInteger sum = BigInteger.valueOf(0);
BigInteger result = BigInteger.valueOf(1);
BigInteger currentNum = BigInteger.valueOf(0);
for(long i = 1; i<=max; i++){
result = result.multiply(BigInteger.valueOf(i));
//System.out.println(result);
}
while (!result.equals(0)) {
sum = sum.add(result.mod(BigInteger.valueOf(10)));
result = result.divide(BigInteger.valueOf(10));
System.out.println(sum + " "+ result);
}
return sum;
}