0

Project Euler Problem 20を解決しようとしていますが、解決するのは非常に簡単だと思いますが、Javascript では正しい出力が得られないことがわかりました。

var fact = 1;
for (var i = 100; i > 0; i--) {
    fact *= i;
}

var summed = 0;
while (fact > 0) {
    summed += Math.floor(fact % 10);
    fact = fact / 10;
}

console.log(summed); //587

http://jsfiddle.net/9uEFj/

では、100を解いてみましょう!下から (つまり、以前のように 100 * 99 * .. * 1 ではなく 1 * 2 * 3 * ... * 100 ):

var fact = 1;
for (var i = 1; i <= 100; i++) {
    fact *= i;
}

var summed = 0;
while (fact > 0) {
    summed += Math.floor(fact % 10);
    fact = fact / 10;
}

console.log(summed); //659

http://jsfiddle.net/YX4bu/

ここで何が起きてるの?乗算順序が異なると結果が異なるのはなぜですか? また、問題 20 の正しい結果が得られないのはなぜですか? (648)

4

1 に答える 1