在滑块输入范围之间打印素数

时间:2017-09-29 13:50:54

标签: javascript

我尝试打印介于1到1000之间的素数或任何数字,输出将显示1不是素数,但1以外的数字正常工作。

while (minValue< maxValue) {
       var flag = false;

        for(var i = 2; i <= minValue/2; ++i) {

            if(  minValue % i == 0 ) {
                flag = true;
                break;
            }   
        }

        if (!flag)
            document.write(minValue+ " ");

        ++minValue;
}

2 个答案:

答案 0 :(得分:0)

minValue可能已初始化为1。它应该从2开始。

答案 1 :(得分:0)

  

输出将显示1,它不是素数,而是数字   除1以外工作正常

正在显示

1,因为如果您将minValue作为1传递,则会跳过for循环并且标记将保留false

if (!flag)将保持为真,并且会打印该值(在您的情况下为1)。

将您的逻辑更改为

while ( minValue < maxValue ) {
     if ( minValue == 1 ) //this condition is added
     {
       ++minValue;
       continue;
     }
     var flag = false;
     for(var i = 2; i <= minValue/2; ++i) {
        if(  minValue % i == 0 ) {
           flag = true;
                break;
        }   
     }
     if (!flag)
     {
          document.write(minValue+ " ");
     }
     ++minValue;
}

或者甚至更好,在while循环之前保持这个条件,这样就不会为每次循环运行它。