Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#21

AW: Sieb des Eratosthenes

  Alt 28. Apr 2013, 22:16
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.

Geändert von sx2008 (28. Apr 2013 um 22:19 Uhr)
  Mit Zitat antworten Zitat