查找数组中的素数数量

时间:2015-07-31 21:24:06

标签: c++

我正在尝试编写一个函数来查找数组中素数的数量。

int countPrimes(int a[], int size)
{
    int numberPrime = 0;
    int i = 0;
    for (int j = 2; j < a[i]; j++)
    {
        if(a[i] % j == 0)
            numbPrime++;
    }
    return numPrime;
}

我认为我缺少的是我必须在每次迭代后重新定义我,但我不确定如何。

1 个答案:

答案 0 :(得分:5)

你需要2个循环:1个数组,1个检查所有可能的除数。我建议将主要支票分成一个功能。代码:

bool primeCheck(int p) {
    if (p<2) return false;

    // Really slow way to check, but works
    for(int d = 2; d<p; ++d) {
        if (0==p%d) return false; // found a divisor
    }
    return true; // no divisors found
}

int countPrimes(const int *a, int size) {
    int numberPrime = 0;
    for (int i = 0; i < size; ++i) {
        // For each element in the input array, check it,
        // and increment the count if it is prime.
        if(primeCheck(a[i]))
            ++numberPrime;
    }
    return numberPrime;
}

你也可以像这样使用std::count_if

std::count_if(std::begin(input), std::end(input), primeCheck)

直播here