Vezi incearca asa:
program ciurul_lui_Eratostene;
var v1,v2:array[2..1000000] of longint;
nr,i,j:longint;
f:text;
begin
assign(f,'ciur.in');
reset(f);
readln(f,nr);
close(f);
i := 4;
while (i <= nr) do begin
Prim[i] = false;
i := i + 2;
end
i := 3;
while (i * i <= nr) do begin
if (Prim[i] == true) then begin
j = i * i;
while (j <= nr) do begin
Prim[j] = false;
j := j + i;
end
end
end
end.
Sper ca n-am gresit nimic. Explicatia ar veni in felul urmator: Setezi la inceput pt numerele pare ca nu sunt prime, iar apoi pt fiecare nr impar, daca e prim, atunci incepi de la i * i, si cresti din i in i pana la nr. De ce de la i * i ? Pentru ca cele pana la i * i sunt de forma C * i, unde C este < i, C continand un numar prim.
Sper ca ai inteles
.