Cod sursa(job #982176)

Utilizator florin011Florian Andone florin011 Data 8 august 2013 19:11:33
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
//Ciurului lui Erathostene,complexitate O(n log log n)
#include<fstream>
using namespace std;
#define MAX_N 2000000

fstream f("ciur.in",ios::in); //fisier de intrare
fstream g("ciur.out",ios::out);  //fisier de iesire

int main()
{
    int n,nr,i,j;
    bool v[MAX_N];

    f>>n; //citire numarul pana la care aplic algoritmul
    f.close(); //inchidere fisier de intrare

    //v[i]=1 - i prim
    //v[i]=0 - i compus
    for(i=2; i<=n; i++)
        v[i]=1;       //presupun ca toate sunt prime pana la n

    for(i=2; i<=n; i++)
        if(v[i]==1) //daca i este prim
            {
                nr++;
                for(j=i+i; j<=n; j+=i) //fiecare multiplu de i este compus
                    v[j]=0;
            }
    g<<nr; //scriere solutie
    g.close(); //inchidere fisier de iesire

    return 0;
}