Cod sursa(job #2184488)
Utilizator | Nicola Victor Teodor Victoras2006 | Data | 24 martie 2018 09:10:31 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <fstream>
#include <bitset>
#define VM 2000000
using namespace std;
bitset <VM + 1> ciur;
ifstream fin ( "ciur.in" );
ofstream fout ( "ciur.out" );
void calc_ciur( int n ) {
ciur[0] = ciur[1] = 1;
for ( int i = 2; i * i <= n; i ++ )
if ( ciur[i] == 0 )
for ( int j = i * i; j <= n; j += i )
ciur[j] = 1;
}
int main() {
calc_ciur( VM );
int n, cnt;
fin >> n;
cnt = 0;
for ( int nr = n; nr >= 2; nr -- )
if ( ciur[nr] == 0 )
cnt ++;
fout << cnt << "\n";
return 0;
}