/* implementazione del crivello di Eratostene per la ricerca dei numeri primi */ #include #include #include //------------------------------------------------- void rimuoviZeriI(int *pn, int v[]) { int i, nnz = 0; for (i=0; i < *pn; i++) { if (v[i] != 0) { v[nnz++] = v[i]; } } *pn = nnz; } //-------------------------------------------------- int main(int argc, char *argv[]) { int i, ipr, pr, nPrimi=0, nMax, n; char nomeFile[50]; FILE * fp; if (argc < 2) { printf("\n devi dare il nr max a riga di comando\n\n"); return 0; } n = atoi(argv[1]); int v[n]; sprintf(nomeFile, "numeri_primi_%d.txt", n); printf("I numeri primi andrannno scritti in %s\n", nomeFile); fp = fopen(nomeFile, "w"); for(i=0; i 2) nMax = floor( sqrt(n)); // massimo nr con cui provare while (ipr < nMax) { pr = v[ipr]; if(pr != 0) { // se non è già stato cancellato è primo for(i=(ipr+1); i