Ho sviluppato un programma che calcola i primi numeri primi contenuti nei primi n numeri (inseriti a piacimento dall'utente).
Questo è il codice:
Il programma funziona se viene visualizzato a shell.codice:#include <stdlib.h> #include <stdio.h> int main() { long i=0, j=2, k=1, n=0, h=0; long *a, *b; FILE *out; scanf("%d", &n); a = (long *)calloc(n, sizeof(long)); b = (long *)calloc(n, sizeof(long)); out = fopen("Numeri.txt", "w"); for (i = 0; i <= n+1; i++) { a[i] = i; } b[1] = 1; i = 2; while(j < n) { while(a[j] == 0 && j < n) j++; if(a[j] != 0) { b[i]=a[j]; i++; } for(k = 1; k <= n/j; k++) { a[k*j] = 0; } j++; } h = i; for (i = 1; i < h; i++) { fprintf(out, "%d\t", b[i]); } fclose(out); return 0; }
Invece se stampo l'output sul file di testo e richiedo un n > 1000 non mi vengono visualizzati i numeri all'interno del file.
Ritengo ci sia qualche errore nell'allocazione della memoria, o qualcosa di simile.
Sapreste aiutarmi?
N.B. Ho notato inoltre che se tento di stampare il risultato per n >= 9999 non viene visualizzato nemmeno dalla shell.

					
					
					
						
  Rispondi quotando