মঙ্গলবার, ২০ নভেম্বর, ২০১২

UVa-1180:Perfect Numbers


#include<cstdio>
#include<iostream>
#include<cmath>

#define MAX 1<<26

bool check(int N,int pos)
{
return   (bool) (N & (1<<pos));

}
int set(int N,int pos)
{return  N | (1<<pos);

}

using namespace std;

int bitsieve[(MAX>>5)+2];
void sieve()
{
   int i,j,n;
    n=(int) sqrt(MAX);
   for(i=3;i<=n;i+=2)
     {
         if(check(bitsieve[i>>5],i&31)==0)
         {//cout<<i<<"prime"<<endl;


           for(j=i*i;j<=MAX;j+=i<<1)
             {
                 bitsieve[j>>5]=set(bitsieve[j>>5],j&31);
             }

             }

     }

}


int main()
{
    sieve();

}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন