Pagini recente » Cod sursa (job #1571310) | Cod sursa (job #2663039) | Cod sursa (job #2597126) | Cod sursa (job #1451004) | Cod sursa (job #736518)
Cod sursa(job #736518)
#include <fstream>
#include <cstdlib>
using namespace std;
const int N_MAX=(2000000>>4)|1;
int isNPrime[N_MAX];
int main()
{
int N, i, j, toAdd, count;
ifstream in("ciur.in");
ofstream out("ciur.out");
in>>N;
count=(N+1)>>1;
for(i=1; ((i*i)<<1)+(i<<1) < N; ++i)
if(0 == (isNPrime[i>>3] & (1<<(i&7))) )
{
toAdd=(i<<1)|1;
for(j=((i*i)<<1)+(i<<1); (j<<1) < N; j+=toAdd)
{
if(0 == (isNPrime[j>>3] & (1<<(j&7))) )
{
--count;
}
isNPrime[j>>3]|=1<<(j&7);
}
}
out<<count<<'\n';
return EXIT_SUCCESS;
}