#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();
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন