Cod sursa(job #1357953)

Utilizator vladburceaVlad Burcea vladburcea Data 24 februarie 2015 11:25:35
Problema Ciurul lui Eratosthenes Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream>
using namespace std;
int ciur[2000000];
ifstream f("ciur.in");
ofstream g("ciur.out");
void ciurul(int n)
{
    int k=2,i;
    ciur[1]=1; //numarul 1 nu este considerat numar prim asa ca il marcam cu 1
    while(k*k<=n)
    {
        for(i=2;i<=n;i++)
            ciur[k*i]=1; //marcam multiplii lui k ca fiind numere neprime
        k++; //creste k
        while(ciur[k]==1)
            k++; //crestem k cat timp acesta nu este prim
    }
}
int main()
{
    int n,i,nrprime=0;
    f>>n;
    ciurul(n);
    for(i=1;i<=n;i++) //parcurgem vectorul "ciur" pentru a gasi numerele prime
        if(ciur[i]==0)
            nrprime++; //cand gasim un numar prim creste contorul
    g<<nrprime;
}