Can someone explain how this code works ... 

void sieve(int n)
{
     int x=n/2, y=(int)sqrt(n);
     arr[1]=2;

     for(int i=1;i<=x;i++)
         prime[i]=false;

     for (int i=1; i<=y; i++) 
     {
         if (!prime[i]) 
         {             
             for (int j=3*i+1;j<=x;j+=(2*i+1))
                 prime[j] = true;
         }
     }

     for (int i=1; i<=x; i++) 
         if(!prime[i])
          arr[k++]=2*i+1;
}

-- 


Reply via email to