计算向量中的素数

时间:2014-01-27 21:55:47

标签: c++ vector primes

如何计算载体中有多少素数?

我的矢量numbers_包含10个整数。其中2个是素数。

因此,计数器应该在函数结束时返回2。但在这种情况下,计数器返回6。

我被困在哪里?

谢谢你们。

到目前为止,这是我的代码:

int numberClass::countPrims()
{
    int counter = 0;

    for(int i = 0; i<numbers_.size();i++)
    {
        bool prime = true;

        if(numbers_.at(i)%2 == 0)
        {
            prime = false;
        }
        if(prime)
        {
            counter++;                   
        }
    }
    return counter;
}

2 个答案:

答案 0 :(得分:0)

很明显,确定数字是否为素数的代码无效。我建议编写一个单独的函数来确定给定的数字是否为素数,测试它并在你的类中使用它。

至于你的代码

 for(int i = 0; i<numbers_.size();i++)
{
     bool prime = true;

    if(numbers_.at(i)%2 == 0)
    {
        prime = false;
    }
     if(prime)
     {
         counter++;                   
     }
}

然后,每当数字不能被2整除时,计数器就会增加。但是非素数也不能被2整除。 在您的代码中,您只需计算向量中奇数值的数量。

顺便说一句,2是素数。:)

答案 1 :(得分:0)

我跟随你的建议人员并首先实施一个bool函数来测试数字是否为素数。

bool prime(int number) {
if (number < 2)
{
        return false;
}

for (int i = 2; i < (number / 2 + 1); i++)
{
    if (number%i == 0)
    {
        return false;
    }
}
return true;
}

现在它起作用,thx。