Zitat von
harryi:
Ich habe eigentlich alles verstanden, aber irgendwie will es nicht klappen.
Du hast vieleicht alles verstanden, aber nicht richtig umgesetzt.
Rück deinen Code mal ordentlich ein, dann siehst du vieleicht auch schon den ersten Fehler.
Delphi-Quellcode:
for i:=2 to nmax do
prim[i]:=1;
Das Array wird ordentlich initialisiert, so weit so gut.
Fehler:
Die Variable i ist nach dem Schleifendurchlauf undefiniert, das müsste dir der Compiler an dieser Stelle auch melden.
Tatsächlich wird hier eine neue Schleife benötigt, in der für jede Zahl die eine Primzahl ist, das "Aussieben" erfolgt.
Richtig:
Delphi-Quellcode:
for i:=2 to nmax do
begin
if prim[i] = 1 then
begin
v:=2;
while v*i<=nmax do
begin
Fehler:
prim[i]:=0;
Natürlich nicht i sondern v * i, das jeweilige vielfache der Primzahl ist keine Primzahl.
Richtig:
prim[v * i]:=0;