Cod sursa(job #1035094)

Utilizator SeekHunt1334Septimiu Bodica SeekHunt1334 Data 18 noiembrie 2013 12:11:03
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
#define SIZE 2000003

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

void BuildCiur();

vector<bool> ciur;
int num;
int nr = 1;

int main()
{
    fin >> num;
    BuildCiur();

    fout << nr;

    fin.close();
    fout.close();
    return 0;
}

void BuildCiur()
{
    ciur.resize(SIZE);
    int rad = sqrt(num);
    for (int p = 4; p <= num; p += 2)
        ciur[p] = true;

    for (int p = 3; p <= num; p += 2)
    if ( !ciur[p] )
        {
            nr++;
            if ( p <= rad )
                for (int x = p * p; x <= num; x += p)
                    ciur[x] = true;
        }
}