我正在尝试遍历一个数组并计算其中的素数数量......很简单,但我遗漏了一些东西......
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 ++;
}
答案 0 :(得分:5)
您在count++
之前错过了一个条件。
答案 1 :(得分:5)
即使标志为假,也会增加计数。
答案 2 :(得分:3)
将您的代码更改为此
flag = true; // is prime
for (j=2;j<a[i];j++)
{
if(a[i] % j == 0)
{
flag = false;
break;
}
}
if (flag) {
count++;
}
一旦你计算了一个非素数,你也可以突破循环 - 重复测试不会再次变成非质数
答案 3 :(得分:0)
Blah在计算++之前用(flag == true)
条件修复它;
答案 4 :(得分:0)
你在“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;
}
}
}