Cómo te veo bastante perdido te pongo un código sencillito, es bastante auto explicativo pero si tienes alguna duda pregunta. Cómo no puedes usar punteros puedes sustituir la parte del calloc por crearte un vector y rellenarlo tú. Sobre todo compáralo con lo que tenías tú escrito y con lo que tenías en mente a la hora de implementarlo.
#include<stdio.h>
#include <stdlib.h>
int main(){
int n, i, j,aux, *l;
l
= (int *)calloc( n
+ 1, sizeof(int) ); //n+1 enteros puestos a 0
for (i = 2; i <= n; i++){
if (l[i] == 0){ //consideramos no tachados los marcados con 0
for (j = 2; ;j++){
aux = i * j; //los multiplos del numero
if (aux > n) //menores o iguales a n
break;
l[aux] = 1; //los tachamos
}
}
}
for (i = 2; i <= n; i++)
if (l[i] == 0) //si no esta tachado
printf("%d ",i
); // lo imprimimos }
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.