Ho sviluppato un programma che calcola i primi numeri primi contenuti nei primi n numeri (inseriti a piacimento dall'utente).
Questo è il codice:
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;
}
Il programma funziona se viene visualizzato a shell.
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.