【发布时间】:2019-10-25 02:11:40
【问题描述】:
代码显示错误的结果...它显示 15,21 和许多其他奇数为素数,但它们不是...如何解决问题?..我应该在主要部分 [inside int main()]?
#include<bits/stdc++.h>
using namespace std;
#define M 1000000
bool marked[M];
bool sieve(int n)
{
for (int i = 3; i * i <= n; i += 2)
{
if (marked[i] == false)
{
for (int j = i * i; j <= n; j += i + i)
{
marked[j] = true;
}
}
}
}
bool isPrime(int n)
{
if (n < 2)
return false;
if (n == 2)
return true;
if (n % 2 == 0)
return false;
return marked[n] == false;
}
int main()
{
int i,j,k,n,m;
cin>>n;
for(i=0; i<n; i++)
{
cin>>m;
if(isPrime(m))
cout<<"prime"<<endl;
else
cout<<"N"<<endl;
}
}
是因为没有正确使用或调用函数而导致的错误答案吗?......在这种情况下应该怎么做......
【问题讨论】:
-
看来
sieve()函数的意图是找到所有的素数。您能否将手指指向显示的代码中调用此函数的确切行,并准确解释您希望何时调用此函数以及如何调用?