如何计算载体中有多少素数?
我的矢量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;
}
答案 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。