此代码用于查找一定范围内的素数。我使用了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;
}