【发布时间】:2014-01-27 21:55:46
【问题描述】:
如何计算一个向量中有多少个素数?
我的向量 numbers_ 包含 10 个整数。其中 2 个是素数。
所以 counter 应该在函数结束时返回 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;
}
【问题讨论】:
-
“Prime”与“odd”的含义不同。 (Prime number 如果您需要找出答案。)编写一个函数来检查某物是否为质数,然后使用它进行计数。
-
你的函数只计算奇数。例如,
9不是质数,但9 % 2给出了1,所以prime将保持true并被计算在内。 -
我建议先从
IsPrime( int number );函数开始。完成这项工作,剩下的就很容易了。更好的是:使用std::count_if -
@minitech 没有初等数学知识,尝试编程。这不可怕吗?
-
使用这些数字作为测试用例:15 {3 * 5}、21 {7*3}、25 {5 * 5}。这些数字是奇数,但不是素数。在网上搜索“素数筛”