Cod sursa(job #1246026)

Utilizator devilz05Orzan Alexandru devilz05 Data 20 octombrie 2014 13:46:45
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <stdio.h>
// det nr naturale prime mai mici
// limita max, vectorul nr prime mai mici, adresa nr de numere gasite
// 1 param eroare > 1000, 0 nu eroare intors prin numele functie

bool *v = new bool[2000000]();

int ciur(int n, int *p)
{
    int i, j;
    bool *vTemp = new bool[2000000]();//vTemp[2000000] = {false};
    
    if (n < 2 || n == 0)
        return 1;
    
    *p = 0;
    for (i=2; i<=n; ++i)
        if (vTemp[i] == false)
        {
            //v[(*p)++] = true;
            
            v[i] = true;
            ++(*p);
            
            //++(*p);
            for (j=i+i; j<=n; j+=i)
                vTemp[j] = true;
        }
    
    return 0;
}

void printv(int *v, int n)
{
    int i;
    for (i=0; i<n; ++i)
        printf("%i ", v[i]);
}

int main()
{
    
    int p, n, i, j;
    FILE *file = NULL;
    
    file = fopen("ciur.in", "r");
    if (!file)
        return -1;
    else
        fscanf(file, "%i", &n);
    fclose(file);
    
    ciur(n, &p);
    
    file = fopen("ciur.out", "w");
    /*for (i=2, j=0; j<p; ++i)
    {
        if (v[i] == true)
        {
            fprintf(file, "%i ", i);
            ++j;
        }
    }*/
    fprintf(file, "%i", p);
    fclose(file);
    
    return 0;
}