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

问题描述 投票:0回答:1

此代码用于查找一定范围内的素数。我使用了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;
}
c++ dynamic-arrays
1个回答
0
投票

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

memset(prime, true, sizeof(*prime)*(n+1));
© www.soinside.com 2019 - 2024. All rights reserved.