Pagini recente » Cod sursa (job #46502) | Cod sursa (job #2716838) | Cod sursa (job #1501796) | Cod sursa (job #2686196) | Cod sursa (job #509716)
Cod sursa(job #509716)
#include <cstdio>
#include <cstdlib>
using namespace std ;
bool ciur [2000001] ;
int inline sqrt ( int X )
{
int St = 1 , Dr = X , mid ;
while ( ( Dr - St ) > 1 )
{
mid = ( St + Dr ) >> 1 ;
if ( ( mid * mid ) > X )
Dr = mid ;
else
St = mid ;
}
return Dr ;
}
int main ( )
{
freopen ( "ciur.in" , "r" , stdin ) ;
freopen ( "ciur.out" , "w" , stdout ) ;
int N , K = 0 , L ;
register int i ;
scanf ( "%d" , &N ) ;
int Stop = sqrt ( N ) ;
Stop = ( N > Stop ) ? 1 : N ;
for ( i = 4 ; i <= N ; i += 2 )
ciur [ i ] = true ;
++K ;
for ( i = 3 ; i <= N ; i += 2 )
{
if ( ciur [ i ] )
continue ;
L = 2 * i ;
for ( long long j = i * i ; j <= N ; j += L )
ciur [ j ] = true ;
++K ;
}
printf ( "%d" , K ) ;
}