我正在尝试通过Atkins的Sieve查找素数。
最后一个for循环中的if语句从不正确。尝试调试但可以理解出了什么问题。
int limit = 2000000 ;
int crossLimit = (sqrt(limit) - 1)/2 ;
int sieveBound = (limit-1)/2 ;
void SievePrime(int limit)
{
bool* boolArray = new bool [sieveBound]() ;
for(int i = 0;i<crossLimit;i++)
{
if(!boolArray[i])
{
for(int j = 2*i*(i+1);j<sieveBound;j+=2*i+1)
{
// cout<<"hi"<<end
boolArray[j] = true ;
}
}
}
double sum = 2 ;
for(int i =1 ;i<sieveBound ;i++)
{
if(not boolArray[i] )
{
sum += 2*i+1 ;
}
}
cout<<fixed<<sum<<endl;
}
预期输出: 142913828922