数组中的素数

时间:2012-11-03 21:43:33

标签: c++ math

我正在尝试遍历一个数组并计算其中的素数数量......很简单,但我遗漏了一些东西......

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 ++;
}

5 个答案:

答案 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;
        }
    }
}