java – 查找数字100中的数字之和! (我的while循环不会停止)

我一直试图在Project Euler中解决Problem 20

n! means n (n 1) … 3 * 2 * 1
For example, 10! = 10 * 9 … 3 * 2 * 1 = 3628800,
and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
Find the sum of the digits in the number 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;
}

解决方法:

这就是问题:

while (!result.equals(0))

结果是一个BigInteger,永远不会等于整数.尝试使用

while (!result.equals(BigInteger.ZERO))
上一篇:java – 从1到100的所有数字均可被整除的最小正数是多少?


下一篇:1945: 大数相乘(简单)