我的指示是“对于我从1到n,做我%m并返回总和。你需要有一点聪明的表现,因为n可能是一个非常大的数字”
下面的程序适用于小数字。如何使用大数字来提高效率?
function f(n, m) {
var summ = 0;
for (var i = 1; i <= n; i++) {
summ += i % m;
}
return summ;
}
答案 0 :(得分:0)
要查看发生的事情,请考虑部分和,首先从0到m-1之和,从m到2m-1,2m到3m-1之和等。
m=5;
for(j=0;j<5;++j) {
partial = 0;
for(i=j*5;i<j*5+5;++i) {
partial += i % m;
console.log( i , partial );
}
}
要将事情缩小到一行,请查看Triangular Numbers。