如何正确识别具有布尔值的动态数组?

此代码用于查找一定范围内的素数。我使用了Eratosthenes的算法。似乎我的动态数组的范围是错误的。因为当我输入50时,49处于素数集中,当我输入30时,25仍处于素数集中。

我已经检查了for循环。应该没有问题。

void Eratosthenes(int n)
{
    bool* prime;
    prime = new bool[n+1];
    memset(prime,true,sizeof(prime));

    for (int p = 2; p * p <= n; p++)
    {
        if (prime[p] == true)
        {
            for (int i = p * p; i <= n; i += p)
                prime[i] = false;
        }
    }
    for (int p = 2; p <= n; p++)
        if (prime[p])
            cout << p << " ";
    delete[] prime;
}
int main()
{
    int n;
    cout << "enter a interger " << endl;
    cin >> n;
    Eratosthenes(n);
    return 0;
}
niaoren123456ZJJ1988 回答:如何正确识别具有布尔值的动态数组?

您可能想要更正应初始化的元素数:

memset(prime,true,sizeof(*prime)*(n+1));
本文链接:https://www.f2er.com/3163285.html

大家都在问