Cod sursa(job #1772014)

Utilizator danielNiculaeDaniel Niculae danielNiculae Data 6 octombrie 2016 13:39:05
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb

#include <fstream>
#include "bitset"

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 = 0, count = 0;

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

    fscanf(fin, "%d", &N);


    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;
                    if(j < NMAX) {
                        bs[j] = true;
                    }
                }
            }
        }
    }

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

    return 0;
}