Cod sursa(job #2077681)

Utilizator iustin948Homoranu Iustin iustin948 Data 28 noiembrie 2017 14:24:03
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <bits/stdc++.h>

using namespace std;
bitset<2000001> a;

int main()
{
    int i, j, n, cnt;
    ifstream fin("ciur.in");
    ofstream fout("ciur.out");
    fin >> n;

    a[0] = a[1] = 1; /// o si 1 nu sunt prime
    for(i=4;i<=n;i+=2)
        a[i] = 1; ///numerele pare diferite de 2 nu sunt prime
    for(i = 3; i <= n; i += 2)
        if(a[i] == 0) /// i- prim si marchez multiplii cu 1
        for(j =i*i; j <= n; j += (2*i))
        a[j] = 1;
    cnt = 0;
    for(i=2; i <= n; i++)
        if(a[i] == 0) cnt++;
    fout << cnt << "\n";
    fout.close();
    return 0;
}