Cod sursa(job #2721432)

Utilizator Victor2006Nicola Victor-Teodor Victor2006 Data 11 martie 2021 19:53:31
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <iostream>
#define N 2000000

using namespace std;

ifstream fin( "ciur.in" );
ofstream fout( "ciur.out" );

char neprim[N + 1];

void ciur( int n ) {
    neprim[0] = neprim[1] = 0;
    for ( int d = 4; d <= n; d += 2 )
        neprim[d] = 1;
    for ( int d = 3; d * d <= n; d += 2 ) {
        if ( !neprim[d] ) {
            for ( int nr = d * d; nr <= n; nr += d )
                neprim[nr] = 1;
        }
    }
}

int sumpart( char v[], int n ) {
    int ans = 0;
    for ( int i = 2; i <= n; i ++ )
        ans += 1 - neprim[i];
    return ans;
}

int main() {
    int n;
    fin >> n;
    ciur( n );
    fout << sumpart( neprim, n ) << "\n";
}