Hi Leute,
ich hab folgende Prozedur zur Berechnung aller Primzahlen von
a bis
b geschrieben.
Hier der Code:
Delphi-Quellcode:
var Primzahlen: array of boolean;
a,b,i,primkandidat,nichtprim:integer;
Start,Stop,Freq:int64;
Liste:TStrings;
begin
Listbox1.Items.Clear;
a:=strtoint(edit1.text);
b:=strtoint(edit2.text);
SetLength(Primzahlen,b);
Primzahlen[1] := true;
for primkandidat:=2 to b do
if Primzahlen[primkandidat]=false then
begin
nichtprim:=primkandidat*2;
while nichtprim <= b do
begin
Primzahlen[nichtprim] := true;
Inc(nichtprim,primkandidat);
end;
end;
for i:=a to b do
if primzahlen[i] = false then
Listbox1.Items.Add(inttostr(i));
Mit der Rechnung bin ich im großen und ganzen ziemlich zufrieden, nur an der Ausgabe hapert's noch. Im Moment gebe ich die Zahlen von a bis b in 'ner Listbox aus. Das dauert allerdings doch einige Zeit. Da ich die Ausgabe beliebig gestalten kann dürften die Zahlen auch z.B. in einer Datei gespeichert werden. Aber bei all meinen Versuchen, war die Listbox-Variante bis jetzt die schnellste.
Da ich bei dieser Routine voll auf Schnelligkeit baue hab ich auch das
obligatorische Application.Processmessages weggelassen, also Vorsicht!
Egal welche Vorschläge jetzt kommen, ich kann alles gebrauchen, das den Code beschleunigt!
tia, gordon