AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem beim Sieb des Eratostenes

Ein Thema von Nikolas · begonnen am 8. Okt 2003 · letzter Beitrag vom 16. Okt 2003
Antwort Antwort
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#1

Problem beim Sieb des Eratostenes

  Alt 8. Okt 2003, 18:26
Hi
Ich soll mit einem Dyn. Array das Sieb des Eratostenes schreiben. Die Grundidee dafür ist nicht so schwer: Ich nehme die erste Zahl in meinem Array (das von 2 bis 1000 gefüllt ist) und streiche alle Vielfachen der Zahl raus. Dann nehme ich die nächste Zahl(die ungleich 0 ist) und so weiter. Alle Zahlen denen ich so begegne müssen dann prim sein. Die will ich dann in einem Stringgrid (sg1) ausgeben. Ich komme bei dem Code einfach nicht weiter. Vielleicht kann mir jemand helfen.

Delphi-Quellcode:
lenght:=strtoint(egroesse.Text);
SetLength(Liste,lenght);

for index:=1 to lenght do
begin
Liste[index]:=index;
end;

index:=1;
abstand:=1;
zeile:=1;

while index<lenght do
begin
inc(abstand);
index:=abstand;

        if liste[index] > 0 then
        begin

            while index < lenght do
                 begin
                 index:=index+abstand;
                 liste[index]:=0;
                 end;
        end

        else

            begin
            sg1.RowCount:=sg1.RowCount+1;
            sg1.cells[0,zeile]:=inttostr(zeile);
            sg1.cells[1,zeile]:=inttostr(index);
            inc(zeile);
            end;
TXHbyTOX
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem beim Sieb des Eratostenes

  Alt 8. Okt 2003, 19:22
Hi,

Ich hab ein String Grid zwar ehrlich gesagt noch nie benutzt, aber tut's denn nicht auch eine Listview oder eine Listbox?

Grüße,
Dani
Dani H.
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: Problem beim Sieb des Eratostenes

  Alt 8. Okt 2003, 19:24
Hallo,

ich habe Dir mal ein Beispiel aufgeschrieben:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Liste: array of Integer;
  Len, I, J: Integer;
begin
  Memo1.Lines.Clear;

  Len := StrToInt(EGroesse.Text);
  SetLength(Liste, Len + 1);

  for I := 1 to Len do
  begin
    Liste[I] := I;
  end;

  for I := 2 to Len div 2 do
  begin
    if Liste[I] <> 0 then begin
      for J := 2 to Len div I do
      begin
        Liste[I * J] := 0;
      end;
    end;
  end;

  for I := 1 to Len do
  begin
    if Liste[I] <> 0 then begin
      Memo1.Lines.Add(IntToStr(Liste[I]));
    end;
  end;

  Finalize(Liste);
end;
Da dynamische Arrays immer bei 0 beginnen, habe ich bewußt ein Element mehr angefordert, um Rechnerei zu sparen. Du solltest nochmal überlegen, ob meine Schleifenendwerte stimmen, da habe ich nicht viel Grips reingesteckt. Mein Memo kannst du wieder durch das Grid ersetzen.

Viele Grüße
Lutz
  Mit Zitat antworten Zitat
Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#4

Re: Problem beim Sieb des Eratostenes

  Alt 8. Okt 2003, 19:37
An alle Primzahlenrechner: bitte beachtet, 1 ist keine Primzahl.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: Problem beim Sieb des Eratostenes

  Alt 9. Okt 2003, 14:55
Zitat:
An alle Primzahlenrechner: bitte beachtet, 1 ist keine Primzahl.
Warum denn nicht ?

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Problem beim Sieb des Eratostenes

  Alt 9. Okt 2003, 15:07
Weil eine Primzahl x durch genau zwei natürliche Zahlen teilbar sein muss - diese Zahlen seien eins (1) und die Primzahl (x) selbst.

Betonung liegt dabei auf genau zwei.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: Problem beim Sieb des Eratostenes

  Alt 16. Okt 2003, 13:56
Zitat:
Weil eine Primzahl x durch genau zwei natürliche Zahlen teilbar sein muss - diese Zahlen seien eins (1) und die Primzahl (x) selbst
Warum soll ein Primzahl durch genau zwei Teiler teilbar sein ?

Gruß Hagen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Problem beim Sieb des Eratostenes

  Alt 16. Okt 2003, 14:05
Moin Hagen,

die Definition, die ich mal dazu gelernt habe:

Eine Primzahl ist genau durch 1 und sich selber teilbar.

Keine Zahl mehr, keine weniger.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Problem beim Sieb des Eratostenes

  Alt 16. Okt 2003, 14:15
Zitat:
die Definition, die ich mal dazu gelernt habe:
Eine Primzahl ist genau durch 1 und sich selber teilbar.
Keine Zahl mehr, keine weniger.
Ah, jetzt kommen wir der Sache aber näher, "Die Definition" ist das wichtige an der Sache. Denn es wurde von den Menschen einfach mal eben so definiert da ansonsten deren ganzes Zahlengebäude auseinander fällt.

Will man beweisen warum es so sein MUSS reicht eine solche Definition aber nicht aus.
Der eigentliche Beweis (erst viel später durchgeführt) warum 1 keine Primzahl ist führt zu der Bestätigung das 1 die EINHEIT in jedem System ist. Sie hat wichtigere Eigentschaften als alle anderen Zahlen. Man könnte die 1 als Primzahl bezeichnen was aber in der Begrifflichkeit der Mathematik alle Definitionen über den Haufen werfen würde. Das heist aber nicht das die 1 als solches nicht auch eine Primzahl sein könnte.

Gruß Hagen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz