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