Я пытался решить Проблема 20 в Project Euler:
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, потому что мой код представляет собой бесконечный цикл.После того, как результат стал 0 в цикле while, он просто не остановился.Кто-нибудь может мне помочь исправить это?
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;
}