Einzelnen Beitrag anzeigen

dolphin

Registriert seit: 17. Jan 2013
7 Beiträge
 
#1

Sieb des Erathosthenes

  Alt 17. Jan 2013, 10:37
Hallo,

ich probiere seit ein paar Stunden das folgende WirWar zum laufen zu bringen...


Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var
  primes:TStringList;
  nr:Integer;
  i,j,n, luckynr: Integer;
begin
  primes:= TStringList.Create;
  nr:= strtoint(edit1.Text);
  for i:= 2 to nr do begin
    primes.Add(inttostr(i));
    end;

  //showmessage(primes[-1]);
  i:=0;
  n:= i+1;
  while True do begin
    j := strtoint(primes[n]);
    luckynr:=strtoint(primes[i]);

    if j = strtoint(primes[primes.count-1]) then begin

      if j mod luckynr = 0 then begin

        primes.Delete(primes.IndexOf(inttostr(j)));
        end;

      i:=i+1;
      n:=i+1;
      end

    else if j mod luckynr = 0 then begin
      primes.Delete(primes.IndexOf(inttostr(j)));
      n:=n+1
      end

    else if luckynr = strtoint(primes[primes.count-1]) then begin
      break;
      end

    else begin
      n:=n+1;
      end;

    end;



end;

end.
Er will mir einfach nicht richtig die Zahlen aus der TStringList streichen und nach einer Weile bekomme ich einen Fehler das ich ueber das Listenende waere. Ich benutze die TStringList weil dadurch die Elemente nachruecken wenn ich eines entferne was ja in einem Array nicht der fall ist.

Greetz
Dolphin
  Mit Zitat antworten Zitat