also ich seh ein es gibt ne kleinigkeit die man verbessern kann:
Delphi-Quellcode:
procedure Primzahlen;
var prim: boolean;
i,k: integer;
begin
form1.listbox1.Clear;
i:=2;
form1.gauge1.maxvalue:=strtoint(form1.edit1.text);
form1.gauge1.progress:=0;
while i<=strtoint(form1.edit1.text) do
begin
prim:=true;
if i>2 then
begin
k:=0;
while (k<form1.listbox1.items.count) and (i>=strtoint(form1.listbox1.items[k])*2) and prim do
begin
if (i mod strtoint(form1.listbox1.items[k]))=0 then prim:=false;
application.processmessages;
inc(k);
end;
end;
if prim then form1.listbox1.Items.add(inttostr(i));
inc(i);
form1. gauge1.progress:=i;
end;
end;
Ab Zahlen von 15000 macht sich das sehr spürbar...
P.S.: wenn jemand noch nen schnelleren Algorithmus findet wär ich sehr
dankbar wenn mir den jemand mal schicken könnte...