javascript - 一道js算法题
天蓬老师
天蓬老师 2017-04-10 17:29:03
[JavaScript讨论组]

求1到100的质数和,结果不对啊...大神看看哪里错了

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
ringa_lee

除了楼上提到的应该在第一个 for 后面,每个数重置一下 amount = 0之外,内层的for循环

for (j<=1;j<=i;j++)

应该也是有问题的。j<=1,首先j没有声明,会报错Uncaught ReferenceError: j is not defined(…),其次就算声明了var j;,也会返回一个false,因为<=是判断而不是赋值。

经过修改后的代码应该是:

var sum = 0;
for (var i = 1; i <= 100; i++) {
    var count = 0;
    for (var j = 1; j <= i; j++) {
        if (!(i % j)) {
            count++;
        }
    }
    if (count == 2) {
        sum += i;
    }
}

alert(sum);
PHP中文网

你的 amount 变量放在最外层了,一直在增加,应该在第一个 for 后面,每个数重置一下 amount = 0

巴扎黑
埃拉托斯特尼筛法计算质数和
function getPrimes(n) {
    if (n < 2 || n > 1000000) return;
    var array = Array.from({
        length: n
    }, function(v, k) {
        return 0
    });
    array[0] = 1;
    array[1] = 1;
    for (var i = 2; i < Math.sqrt(n); i++) {
        if (array[i] == 0) {
            for (var j = i * i; j < n; j += i) {
                array[j] = 1;
            }
        }
    }
    var sum = 0;
    array.forEach(function(item, i) {
        item === 0 ? sum += i : '';
    })
    return sum;
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号