Cod sursa(job #2558371)

Utilizator recapitulareOJIScarlat Marius Stefan recapitulareOJI Data 26 februarie 2020 15:41:11
Problema Ciurul lui Eratosthenes Scor 100
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,sol;
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)
        if(!prime[i])
           sol++;
    
    g << sol;
    
    return 0;
}