Das Problem ist wirklich, dass ich es bis Morgen brauche. Es ist ja nicht so, dass ich die ganze Woche lang faul rumgesessen hätte...
Ich kann dir nur soviel helfen, dass es gegenüber Anderen nicht unfair ist.
Schau mal das Wichtigste ist den den Algorithmus richtig umzusetzen.
Den Algo kannst du quasi 1:1 von Wikipedia abschreiben:
http://de.wikipedia.org/wiki/Sieb_de...mplementierung
Ok, nächster Schritt:
überlege dir was braucht der Algorithmus als Input und was kommt raus?
Inputparameter ist N (ein Integer)
der Output sind die Primzahlen.
Die Ausgabe fehlt bei deinem Code komplett.
Du hast einen Input und einen Output und so etwas kann man gut in eine Unterroutine verpacken:
Delphi-Quellcode:
procedure BerechnePrimZahlen(N:Integer; ausgabe:TStrings);
var gestrichen: array [2..50000] of boolean; // N darf maximal 50000 sein
begin
{ in dem Code auf Wikipedia steht: }
// i ist prim, gib i aus
print i; ", ";
{ aber statt dass du print aufrufst machst du das }
ausgabe.Add(IntToStr(i)); // Primzahl zur Liste hinzufügen
end;
Die Prozedur nützt aber nichts ohne entsprechenden Aufruf:
Delphi-Quellcode:
procedure TForm1.BerechnenClick(Sender: TObject);
var
a:Integer;
begin
a:= StrtoInt(edtZahl.Text);
BerechnePrimZahlen(a{=Parameter N}, mAusgabe.Lines)
end;
Eigentlich fehlt in deinem Code nur die Ausgabe der Primzahlen (also nur eine Zeile).
Du müsstest nur
mAusgabe.Lines.Add(IntToStr(p));
an die richtige Stelle zu schreiben.
Welches die richtige Stelle ist, bekommst du raus wenn du deinen Code mit dem Code auf Wikipadia vergleichst.