首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Euler 7 Javascript

Euler 7 Javascript
EN

Stack Overflow用户
提问于 2013-08-03 05:12:22
回答 2查看 109关注 0票数 0

有人能帮上忙吗?它应该得到10001个素数。我知道is_prime函数可以测试一个数字是否是素数,因为我成功地使用了这段代码来解决前面的问题。现在,我只是尝试在一个for循环中调用它,直到计数器达到我想要的目标,同时将最近的数字存储在一个变量' holder‘中,并在最后打印。

代码语言:javascript
复制
function is_prime(num) {
    if (isNaN(num)) return false;
    for (var i=2; i<=Math.sqrt(num); i++) {
        if (num % i === 0) {
            return false;
        }
    }
    return true;
}

function getBigPrime () {
var holder = 0;
var counter = 0;
    for (var k=3; counter<=10000; k+=2) {
        if (is_prime(k)) 
            holder = k; 
            counter += 1;
    }
    console.log(holder);
}

getBigPrime();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-03 05:21:04

计数器的作用域错误。对于For循环,可以将counter = 1;初始化为2,然后保持原样

http://jsfiddle.net/XtTYm/2/

代码语言:javascript
复制
function is_prime(num) {
    if (isNaN(num)) return false;
    var sq = Math.sqrt(num);
    for (var i=2; i<=sq; i++) {
        if (num % i === 0) {
            return false;
        }
    }
    return true;
}

    function getBigPrime () {
    var holder = 0;
    var counter = 1;
        for (var k=3; counter<=10000; k+=2) { 
            if (is_prime(k)){ 
                holder = k; 
                counter += 1; // should be inside the if
            }
        }
        console.log(holder);
    }

    getBigPrime();
票数 0
EN

Stack Overflow用户

发布于 2013-08-03 05:19:58

如果省略了if块的括号,实际上只有第一行才是块的一部分。当前的if语句的行为如下:

代码语言:javascript
复制
if (is_prime(k)) {
    holder = k; 
}

counter += 1;

另外,循环跳过2,第一个素数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18029510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档