so was hier würde ich übrigens als Schiedsrichter nicht durchgehen lassen:
Delphi-Quellcode:
Prim[1] := 2;
Prim[2] := 3;
Prim[3] := 5;
anz_Prim := 3;
Denn sonst kommt der nächste und knotet gleich alle Primzahlen fest ins Programm. Entweder wird alles ermittelt oder alles fest rein geknotet. Oder warum hast du nur die ersten 3 Primzahlen fest rein geknotet und nicht die ersten 4?
@uwe:
folgendes sollte noch schneller sein:
Delphi-Quellcode:
For D := 7 To max_Prim do begin // 6 ist keine Primzahl, daher ab 7
if not Odd(D) then Continue; // schließe alle geraden Zahlen aus
maxTest := Trunc(Sqrt(D)); // prüfe nur bis max. Quadratwurzel des Kandidaten
for I := 2 to anz_Prim do begin // gerade Zahlen hatten wir ausgeschlossen, daher ab 2
test := Prim[I];
if test > maxTest then Break;
if not Boolean(D mod test) then
Break;
end;
if (i < anz_Prim) then
Continue;
Inc(anz_Prim);
Prim[anz_Prim] := D;
end;