Cod sursa(job #1473413)

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

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

// Rezolvare problema
void solve(int n, int* vector, int index) {
    int i, done = 0;

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

        if (index == n) {
            done = 1;
        } else {
            index++;
        }
    }
}

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;

        solve(n, vector, 2);

        int i, nr = 0;

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

    return 0;
}