Cod sursa(job #1772008)

Utilizator danielNiculaeDaniel Niculae danielNiculae Data 6 octombrie 2016 13:33:29
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb

#include <fstream>

using namespace std;

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

const int NMAX = 2000005;
//bool divide[NMAX];

bitset<NMAX> bs;

int main(int argc, char** argv) {
    int N, count = 0;
    fin >> N;

    FILE *fout = fopen("ciur.out", "w");


    for(long i = 2 ; i <= N ; i++) {
        if(!bs[i]) {
            count++;
//            printf("i is: %d\n", i);
//            fout << "count is:" << count;
            if(i * i <= N) {
                for(long j = i * i ; j <= N ; j += i) {
//                printf("j is: %d\n", j);
//                fout << "J is:" << j;
                    bs[j] = true;
                }
            }
        }
    }

//    printf("%d\n", count);
    fprintf(fout, "%d\n", count);
    fclose(fout);
//    fout << count;
    fin.close();
//    fout.close();

    return 0;
}