Cod sursa(job #1110181)

Utilizator JusTMarKTMDMargineanu Cristian JusTMarKTMD Data 17 februarie 2014 21:14:55
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
//Programarea in limbajul C/C++ pentru liceu, p.82
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
bool a[1000001];
unsigned int N, i, j, contor=1;
/* varianta de baza
int main()
{
    f>>N;
    for(i=2;i<=N;i++)
    {
        for (j=i+i;j<=N;j+=i)
            a[j]=1;
    }
    for (i=2;i<=N;i++)
        if (a[i]==0) contor++;
    g<<contor;
}*/
/*optimizat prin calcularea doar pina la sqrt(N)
int main()
{
    f>>N;
    for(i=2;i<=sqrt(N);i++)
    {
        for (j=i+i;j<=N;j+=i)
            a[j]=1;
    }
    for (i=2;i<=N;i++)
        if (a[i]==0) contor++;
    g<<contor;
}*/
//a[k]->nr 2*k+1
int main()
{
    f>>N;
    for(i=3;i<=sqrt(N);i+=2)
    {
        for (j=(i+i+i)/2; j<=N/2+1; j+=i)
            a[j]=1;
    }
    for (i=1; (float) i < (float) N/2 ;i++)
        if (a[i]==0) contor++;//g<<2*i+1<<" ";}
    g<<contor;
}