Cod sursa(job #1520169)

Utilizator ChristianCunaCuna Cristian ChristianCuna Data 8 noiembrie 2015 13:48:11
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

#define  MAX 2000000 // 2_000_000

using namespace std;

ifstream in("ciur.in");
ofstream out("ciur.out");

void init_array(bool *array, int size){
    array[0] = false;
    array[1] = false;

    for(int i = 2; i <= size; ++i){
        array[i] = true;
    }

}

void print_array(bool *array, int size){

    out<<"Array: ";
    for(int i = 0; i <= size; ++i)
        out<<array[i]<<" ";
    out<<endl;

}

int get_primes(int size){

    bool array[MAX];

    init_array(array, size);

    for(int i = 2; i <= size; ++i){
        if(array[i]){
            for(int j = 2; i * j <= size; ++j){
                array[i*j] = false;
            }
        }
    }

    int result = 0;

    //print_array(array, size);

    for(int i = 1; i <= size; i++)
        if(array[i])
            ++result;

    return result;

}

int main()
{

    int n;

    in>>n;

    out<<get_primes(n);

    in.close();
    out.close();

    return 0;
}