Cod sursa(job #1000153)

Utilizator Master011Dragos Martac Master011 Data 22 septembrie 2013 10:11:29
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<cstdio>
#include<vector>
#include<cmath>
#define CLOSE fclose(in); fclose(out); return 0;
using namespace std;

int N,Sol;
void ciur ();

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

    fscanf(in,"%d",&N);
    ciur();
    fprintf(out,"%d\n",Sol);

    CLOSE
}

void ciur (){
    int sqr = (int) sqrt(N) + 1;
    vector<bool> v(N + 1);

    for(int i = 4; i <= N; i+= 2){
        v[i] = true;
    }
    Sol++;
    int d;
    for(int i = 3; i <= N; i+= 2)
    {
        if(v[i] == false)
        {
            Sol++;
            if(i > sqr)
                continue;
            d=2*i;
            for(int j = i * i; j <= N; j += d)
            {
                v[j] = true;
            }
        }
    }
}