3

我有一个矢量图

vector<int> vec;

它存储随机数 {5, 7, 8, 9, 13, 15, 17}

我有一个向量,如果前一个向量的数字是否是素数,它会将它们评估为 1 或 0

vector< int> vec_prime_number;

所以对于前一个它将是 {1, 1, 0, 0, 1, 0, 1}

我正在尝试使用 count 函数仅保存其中的素数。我在做这件事时遇到了一些问题。

理想情况下,我想让 vec 有 {5, 7, 13, 17} //换句话说,其中只有素数

我试过像

int cnt = count(vec.begin(), vec.end(), vec_prime_number())

但我无法让它发挥作用。关于如何计算仅存储素数的任何想法?

4

2 回答 2

7

的文档std::count说:

返回范围 [first,last) 中比较等于 val 的元素数。

因此,您应该使用以下内容来获取素数的数量:

int cnt = count(vec_prime_number.begin(), vec_prime_number.end(), 1);

您所见

于 2013-10-01T02:28:14.610 回答
1

"Ideally, I would like to make it so that vec has {5, 7, 13, 17} //in other words, only prime numbers in it"

You don't need to count simply use :

bool IsPrime (int i) 
{ 
  /*returns true, if i is Prime */
}

vec.erase(std::remove_if(vec.begin(), vec.end(), IsPrime), vec.end());
于 2013-10-01T02:35:46.760 回答