Cod sursa(job #2701450)

Utilizator TitanVSirbu Vlad stefan TitanV Data 31 ianuarie 2021 12:27:58
Problema Ciurul lui Eratosthenes Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>

using namespace std;

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

bool a[2000000];
int n;

void div(int k)
{
    for(int i=2; i<n/2; i++)
        if(k%i==0)
            a[k]=1;
}

void eratosthenes(int nrp, int n)
{
    int i=2;
    while(nrp*i<=n)
    {
        div(nrp*i);
        i++;
    }

    while(nrp<=n)
    {
        ++nrp;
        if(!a[nrp])
            eratosthenes(nrp,n);
    }



}

int main()
{

    in>>n;

    eratosthenes(2,n);

    int sum=0;

    for(int i=2; i<=n; i++)
    {
        //cout<<a[i];
        if(!a[i])
            sum++;
    }

    out<<sum;
    return 0;
}