我尝试打印介于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;
}
答案 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
循环之前保持这个条件,这样就不会为每次循环运行它。