Я пытаюсь найти простые числа по Сите Аткинса.
Оператор if в последнем цикле for никогда не выполняется. Попытка отладки, но может понять, что пошло не так.
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