Hallo,
soviel schneller nicht mit meinen Änderungen, aber eventuell 1 oder 2 Millisekunden?
Delphi-Quellcode:
procedure Tfrm_Hauptform.btn_RechneClick(Sender: TObject);
{ ################################################################################################################################## }
var
D : cardinal;
flg_NoPrim : Boolean;
Anfg_Zeit : TDateTime;
Ende_Zeit : TDateTime;
Diff_Zeit : TDateTime;
I : cardinal;
r : cardinal;
{ ################################################################################################################################## }
begin
max_Prim := StrToInt(txt_MaxZahl.Text);
setlength(prim,1000000);
Prim[1] := 2;
Prim[2] := 3;
Prim[3] := 5;
anz_Prim := 3;
lst_Ausgabe.Clear;
lst_Ausgabe.Items.Add('Suche Primzahlen ..');
lst_Ausgabe.Items.Add('Start: ' + DateTimeToStr(Now));
lst_Ausgabe.Refresh;
Anfg_Zeit := Now;
// For D := 6 To max_Prim do
d := 6;
Repeat
begin
// flg_NoPrim := FALSE; // <- ist diese Zuweisung erforderlich,
// wird doch im Repeat Until überschrieben.
I := 1;
repeat
// begin
// r := D mod Prim[I];
// If r = 0 Then flg_NoPrim := TRUE;
// flg_NoPrim := r = 0;
flg_NoPrim = D mod Prim[I];
inc(i);
// end;
until (flg_NoPrim OR (I = anz_Prim));
// If flg_NoPrim=false then
// If Not flg_NoPrim then
case flg_NoPrim of
false : begin
// wo ist denn anz_Prim definiert?
// anz_Prim := anz_Prim + 1;
Inc(anz_Prim);
Prim[anz_Prim] := D;
{lst_Ausgabe.Items.Add(IntToStr(D) + ' ist eine Primzahl!'); }
end;
end;
Inc(d,2);
Until d >= max_Prim;
end;
Achso, nur hingedaddelt, nicht getestet.