如何在JavaScript循环中使用break语句?

时间:2016-03-06 20:01:41

标签: javascript

我正在尝试编写一个脚本来检测该数字是否为素数。该函数对某些数字起作用很好,令人惊讶的是它将数字133打印为素数,这是假的。我怀疑问题出在我的休息声明中,所以如果是这样的话请纠正。

这是我的代码:

function prime(num){
    if (num == 1){console.log(num + " is not a prime number");}
    else if (num == 2){console.log(num + " is a prime number");}
    else if (num !==2 && num !==1){
        for (var i = 2; i<num;  i++ ){ // num = 7
            if (num % i == 0){
                console.log(num + " is a not prime number");
                break;
            }
            else{
                console.log(num + " is a prime number");
                break;
            }
        }
    }
}

4 个答案:

答案 0 :(得分:2)

您需要将最后一个输出数字置于for循环之外的num。如果不这样做,您将始终在第一次迭代时退出for循环。

function prime(num){
    if (num == 1){console.log(num + " is not a prime number");}
    else if (num == 2){console.log(num + " is a prime number");}
    else if (num !==2 && num !==1){
        for (var i = 2; i<num;  i++ ){ // num = 7
            if (num % i == 0){
                console.log(num + " is a not prime number");
                return;
            }
        }
        console.log(num + " is a prime number");
    }
}

答案 1 :(得分:1)

如果您取出第二个break语句,代码将起作用。 这是因为如果循环中的if条件为假,则循环中断。

function prime(num){
        if (num == 1){console.log(num + " is not a prime number");}
        else if (num == 2){console.log(num + " is a prime number");}
        else if (num !==2 && num !==1){
        for (var i = 2; i<num;  i++ ){ // num = 7
            if (num % i == 0){
                console.log(num + " is not a prime number");
                return;
            }
        }
        console.log(num + " is a prime number");
    }
}

这是工作代码。

答案 2 :(得分:0)

因此我们知道break关键字退出当前循环。在for循环中构造逻辑的方式,在循环的第一次传递期间总是达到break语句。这意味着您的循环仅被评估一次(对于i = 2)并且只有大于2的数字才会在您的程序中达到这一点。因此,您只能正确识别2的倍数的非素数。

我们可以通过return解决此问题,而不是在找到因素后解决问题。如果我们已经用尽了所有可能的因素,那么我们可以打印出这个数字是素数。

function prime(num){
    if (num == 1) {
        console.log(num + " is not a prime number");
        return;
    }

    if (num == 2) {
        console.log(num + " is a prime number");
        return;
    }

    for (var i = 2; i<num; i++) {
        if (num % i == 0){
            console.log(num + " is a not prime number");
            return;
        }
    }

    // We never found a factor, which means this must be a prime number
    console.log(num + " is a prime number");
}

答案 3 :(得分:0)

function prime(num){
    var isprime=true;
    if (num == 1){console.log(num + " is not a prime number");}
    else if (num == 2){console.log(num + " is a prime number");}
    else {
        for (var i = 2; i<=num/2;  i++ ){ // num = 7

            if (num % i == 0){
                console.log(num + " is a not prime number");
                isprime = false;
                break;
            }
        }

        if(isprime)
        console.log(num + " is a prime number");
    }
}
  

几点建议:

     
      
  1. 您无需检查else if (num !==2 && num !==1),因为如果num不是1或2,它将自动转到else条件。一个简单的else就足够了。

  2.   你的for循环中的
  3. 你不需要检查i<num。检查直到i<=num/2应该足够作为num可以具有的最大因子是num / 2

  4.