我正在尝试遍历一个数组并计算其中的素数数量......很简单,但我错过了一些东西......
count = 0;
for(i =0; i<5; i++)
{
flag = true; // is prime
for (j=2;j<a[i];j++)
{
if(a[i] % j == 0)
{
flag = false;
}
}
count ++;
}
您之前缺少一个条件count++
。
即使标志为假,您也会增加计数。
将您的代码更改为此
flag = true; // is prime
for (j=2;j<a[i];j++)
{
if(a[i] % j == 0)
{
flag = false;
break;
}
}
if (flag) {
count++;
}
一旦你计算了一个非质数,你不妨跳出循环——它不会再通过重复测试变成非质数
(flag == true)
Blah 用count ++ 之前的条件修复它;
您忘记了“count++;”行中的“if”
count = 0;
for (var i = 0; i < 5; i++)
{
var flag = true; // is prime
for (var j = 2; j < a[i]; j++)
{
if (a[i] % j == 0)
{
flag = false;
break; //this break will avoid useless process
}
}
// only when the flag is false that the current number is prime.
if(!flag) count++;
}
但更好的方法是:
count = 0;
for (var i = 0; i < 5; i++)
{
for (var j = 2; j < a[i]; j++)
{
if (a[i] % j == 0)
{
count++; // don't need a variable flag, put increment here.
break;
}
}
}