Cod sursa(job #1343289)

Utilizator ioan.ungurasuIoan Ungurasu ioan.ungurasu Data 15 februarie 2015 10:24:03
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
#include <vector>
using namespace std;

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

bool a[2000001];

int main() {
    int n, contor, i = 2; bool trecut = false;

    fscanf(in, "%d", &n );

    contor = n-1;
    while ( trecut == false ) {
        if ( a[i] == true ) {
            i++;
            if ( i*i > n )
                trecut = true;
        }
        else if ( a[i] == false && i*i <= n ){
            for ( int j = i*i; j <= n ; j += i )
                if ( a[j] == false ) {
                    a[j] = true;
                    contor--;
                }
            i++;
        }
        else
            trecut = true;
    }
    fprintf(out, "%d", contor);

    return 0;
}