Pagini recente » Cod sursa (job #716119) | Cod sursa (job #3168548) | Cod sursa (job #2828067) | Cod sursa (job #312961) | Cod sursa (job #2665386)
#include <fstream>
using namespace std;
ofstream out("ciur.out");
ifstream in ("ciur.in");
const int LUNGIME=31250;
const int MAXIMUL=2000000;
unsigned long long int v[100000],n;
void init()
{
for(unsigned long long int i=0;i<LUNGIME;i++)
v[i]=(1LL<<64)-1;
}
void ciur()
{
unsigned long long int nr_prime=1,nr_crt=1,nr_prim,nr_non_prim,ord,col;
unsigned long long int i,j,k;
for(i=0;i<LUNGIME;i++)
{
for(j=1;j<=63&&nr_crt<=n;j+=2)
{
if(((v[i]>>j)&1LL)&&nr_crt>=2)
{
nr_prim=nr_crt;
for(k=3;k*nr_prim<=MAXIMUL;k+=2)
{
nr_non_prim=k*nr_prim;
ord=nr_non_prim%64;
col=nr_non_prim/64;
if((v[col]>>ord)&1LL)
{
v[col]=v[col]&(~(1LL<<ord));
}
}
nr_prime++;
}
nr_crt+=2;
}
}
out<<nr_prime;
}
void afisare()
{
unsigned long long int i,j,nr_crt=0;
for(i=0;i<LUNGIME;i++)
{
for(j=0;j<64;j++)
{
if(((v[i]>>j)&1LL)&&nr_crt>=2)
out<<nr_crt<<" ";
nr_crt++;
}
out<<'\n';
}
}
int main()
{
init();
in>>n;
ciur();
//afisare();
return 0;
}