Cod sursa(job #2439920)

Utilizator cezarbalutaBaluta Cezar cezarbaluta Data 17 iulie 2019 11:15:48
Problema Ciurul lui Eratosthenes Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>

using namespace std;

int E[1750000];
int main()
{
    int n, i, j, c = 0, ok;

    FILE *in, *out;
    in = fopen("ciur.in", "r");
    out= fopen ("ciur.out", "w");
    fscanf(in, "%d", &n);
    for(i = 2; i * i <= n; i++)
    {
        if(E[i] == 0)
        {
            for(j = i*i; j <= n; j += i)
                E[j] = 1;
        }
    }
    if(n < 1700000)
        for(i = 2; i <= n; i++)
        {
            if(E[i]==0)
                c++;

        }
    else
    {
        for(i = 2; i < 1700000; i++)
        {
            if(E[i]==0)
                c++;

        }
        for(i = 1700000; i <= n; i++)
        {
            ok = 0;
            for(j = 2; j*j <= i; j++)
            {
                if(i%j==0)
                {
                    ok++;
                    break;
                }
            }
            if(ok == 0)
                c++;

        }
    }

    fprintf(out, "%d", c);

    return 0;
}