Cod sursa(job #761915)

Utilizator ioana26Ioana Andronescu ioana26 Data 27 iunie 2012 20:43:09
Problema Ciurul lui Eratosthenes Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>

/*
Algoritmul de aflare a numerelor prime mai mici decat un numar dat folosind ciurul lui Eratostene.
*/

int ciur_eratostene (int numar) {
    int prime = 1;
    int prim[numar];
    int i, j;

    for (i = 3; i <= numar; i++)
        prim[i] = 1;
    for (i = 3; i <= numar; i += 2) {
        if (prim[i]) {
            prime++;
            j = i + i + i;
            while (j <= numar) {
                prim[j] = 0;
                j += i << 1;
            }
        }
    }  
    return prime;
}

int main () {
	int numar;

    FILE *f_in = fopen("ciur.in", "r");
    FILE *f_out = fopen("ciur.out", "w");

    fscanf(f_in, "%d", &numar);
    int prime = ciur_eratostene(numar);
    fprintf(f_out, "%d\n", prime);
    
    return 0;
}