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