сталкивается с проблемой в поиске суммы простых чисел с помощью сита Аткинса - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь найти простые числа по Сите Аткинса.

Оператор 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...