Esta es una de las soluciones a tu problema. si tienen alguna duda enviala a mi correo. ;) buen suerte
Uses Crt, Dos;
Const
PrimerPrimo=2;
Maximo=1000;
Var
Criba: Packed Array[PrimerPrimo..Maximo] Of Boolean;
Deja, Intervalo, Factor, Multiplo: 0..Maximo;
Begin ClrScr;
Read(Intervalo);
For Factor:= PrimerPrimo To Intervalo Do
Criba[Factor]:= True;
Deja:= Intervalo - PrimerPrimo +1;
Factor:= PrimerPrimo -1;
Repeat
Factor:= Factor +1;
If Criba[Factor] Then
Begin
Delay(65535);
Delay(65535);
WriteLn(Factor);
Multiplo:= 1;
While Factor * Multiplo <= Intervalo
Do Begin
If Criba[Factor * Multiplo] Then
Begin
Criba[Factor * Multiplo] := False;
Deja:= Deja-1
End;
Multiplo:= Multiplo+1;
End;
End;
Until Deja = 0;
End.