【发布时间】:2015-07-29 08:40:28
【问题描述】:
我的指令是“对于从 1 到 n 的 i,是否 i % m 并返回总和。你需要在性能方面稍微聪明一点,因为 n 可能是一个非常大的数字”
下面的程序适用于小数字。我怎样才能使它高效地处理大量数字?
function f(n, m) {
var summ = 0;
for (var i = 1; i <= n; i++) {
summ += i % m;
}
return summ;
}
【问题讨论】:
-
既然这听起来像是功课,我会给你一个提示,看看你是否能弄清楚下一步该做什么。将
console.log(i % m)放入for循环中,看看它显示的n值至少是m的5 倍。这是一个演示:jsfiddle.net/jfriend00/hjhjyrbe. -
我同意@jfriend00,但我再给你一个提示:你不需要for循环来解决这个问题。
-
@jfriend00 这实际上是 codewars.com 上的一个作业,所以你的帮助正是我想要的。不幸的是,它再次适用于小数字但不是大数字:jsfiddle.net/q1g8g6w2
-
@user3696359:实际上我们说的是no loops :-)
-
@Bergi,哈哈是的。我的第二次尝试仅基于 jfriend00 的评论,因为我没有阅读 scelesto 的建议。
标签: javascript math for-loop modulus largenumber