配列をループして、その中の素数の数を数えようとしています...十分に単純ですが、何かが欠けています...
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++
。
フラグが false の場合でもカウントを増やします。
コードをこれに変更します
flag = true; // is prime
for (j=2;j<a[i];j++)
{
if(a[i] % j == 0)
{
flag = false;
break;
}
}
if (flag) {
count++;
}
非素数をカウントしたら、ループから抜け出すこともできます-繰り返しテストしても再び非素数になることはありません
Blah は(flag == true)
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;
}
}
}