Cod sursa(job #2662066)
Utilizator | andrei andrei andrei1616 | Data | 23 octombrie 2020 14:13:03 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 70 |
Compilator | c-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
euclid (int **l, int n) {
int i = 2, nrp = 0, j;
for (;i < n; ++ i) {
if ((*l)[i] == 0) {
++ nrp;
if (i * i < n) {
for (j = i + i; j < n; j += i) {
(*l)[j] = 1;
}
}
}
}
return nrp;
}
void
main (void) {
FILE *f = fopen("ciur.in", "r");
int n;
fscanf(f, "%d", &n);
int *l = malloc(n * 4);
memset(l, 0, n);
n = euclid(&l, n);
FILE *f1 = fopen("ciur.out", "w");
fprintf(f1, "%d", n);
fclose(f);
fclose(f1);
free(l);
}