Cod sursa(job #648286)
| Utilizator | Data | 13 decembrie 2011 11:30:57 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include<stdio.h>
char v[ 20000001];
int ciur( const int &N){
if( N <= 1) return 0;
if( N == 2) return 1;
int nr = 1;
for( int i = 3; i <= N; i += 2 ){
if( v[ i ] == 1) continue;
nr++;
if( long long(i) * i > N ) continue;
for( int j = i * i; j <= N; j = j+ 2*i)
v[ j ] = 1;
}
return nr;
}
int main() {
int N;
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%d", &N);
printf("%d\n", ciur(N));
return 0;
}