我正在尝试解决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!从底部开始(即 1 * 2 * 3 * ... * 100 而不是 100 * 99 * .. * 1 像以前一样):
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)