Cod sursa(job #2558367)

Utilizator recapitulareOJIScarlat Marius Stefan recapitulareOJI Data 26 februarie 2020 15:39:50
Problema Ciurul lui Eratosthenes Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>

std::ifstream f("ciur.in");
std::ofstream g("ciur.out");

const int NMAX = 2000005;
int n,s[NMAX];
bool prime[NMAX];

void sieve(){
    
    prime[0] = prime[1] = 1;
    
    for(int i = 4;i <= n;i += 2)
        prime[i] = 1;
    
    for(int i = 3;i * i <= n;i += 2)if(!prime[i])
        for(int j = i + i;j <= n;j += i)
            prime[j] = 1;
}

int main(){
    
    f >> n;
    
    sieve();
    
    for(int i = 1;i <= n;++i)
        s[i] = s[i - 1] + !(prime[i]);
    
    g << s[n];
    
    return 0;
}