Cod sursa(job #459941)
#include <cstdlib>
#include <fstream>
#define Nmax 125001
/*
*
*/
using namespace std;
char isPrime[Nmax];
int main( void )
{
int N, i, j, nr, count;
ifstream in( "ciur.in" );
in>>N;
for( i=1; ( (i*i)<<1 )+ ( i<<1 ) < N; ++i )
if( 0 == ( isPrime[ i>>3 ] & ( 1<<(i&7) ) ) )
{
count=(i<<1)+1;
for( j=( (i*i)<<1 )+( i<<1 ); j<<1 < N; j+=count )
isPrime[ j>>3 ]|=( 1<<(j&7) );
}
for( i=3, nr=1; i <= N; i+=2 )
if( 0 == ( isPrime[ ( i-1 )>>4 ] & ( 1<<( ( ( i-1 )>>1 ) & 7 ) ) ) )
++nr;
ofstream out( "ciur.out" );
out<<nr<<'\n';
return EXIT_SUCCESS;
}