Cod sursa(job #1473412)

Utilizator raulvasileRaul Vasile raulvasile Data 19 august 2015 13:06:42
Problema Ciurul lui Eratosthenes Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 1.18 kb
/* Author: Raul Vasile
 * Mail: [email protected]
 */

#include <stdio.h>
#include <stdlib.h>

// Rezolvare problema
int solve(int n, int* vector, int index) {
    int i;

    for (i = index * 2; i < n; i += index) {
        vector[i] = 1;
    }

    if (index == n) {
        return 0;
    } else {
        solve(n, vector, index + 1); 
    }

    return 0;
}

int main(int argc, char* argv[]) {
    // Declarare de viariabile
    int n;
    int *vector;

    // Declarare fisiere
    FILE *input, *output;

    // Deschidere fisiere
    input = fopen("ciur.in", "r");
    output = fopen("ciur.out", "w");

    // Verificare fisiere
    if (input == NULL || output == NULL) {
        printf("Error opening files");
        
        return 0;
    } else {
        fscanf(input, "%d", &n);

        vector = (int *) calloc(n, sizeof(int));

        vector[0] = 1;
        vector[1] = 1;
        vector[2] = 0;

        if (solve(n, vector, 2) == 0) {
            int i, nr = 0;

            for (i = 0; i < n; i++) {
                if (vector[i] == 0) {
                    nr++;
                }
            }
            
            fprintf(output, "%d\n", nr);
        }
    }

    return 0;
}