AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sieb des Eratosthenes

Ein Thema von Descole · begonnen am 27. Apr 2013 · letzter Beitrag vom 14. Mai 2013
Antwort Antwort
Benutzerbild von sx2008
sx2008

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

AW: Sieb des Eratosthenes

  Alt 4. Mai 2013, 22:18
Überleg mal was hier passiert:
Delphi-Quellcode:
 if (edtZahl.Text='') then
 begin
   lblFehler.Visible:= true
 end
 else
 begin
   lblFehler.Visible:= false;
 end;
Das Programm läuft doch einfach weiter; da fehlt ein Exit; für den Fall dass die Eingabe nicht korrekt ist.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Sieb des Eratosthenes

  Alt 4. Mai 2013, 23:22
Wäre Dein Sourcecode ordentlich formatiert, sollte es eigentlich offensichtlich sein.
Zunächst solltest du mit TryStrtoInt die Obergrenze aus dem Edit übernehme.
Dann solltest du die Obergrenze auf Gültigkeit prüfen und dann erst rechnen.
Ob Du mit Exit abbrichst oder mit If..else arbeitest ist wahrscheinlich von den Vorlieben Deines Lehrers abhängig.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von info.noob
info.noob

Registriert seit: 15. Apr 2013
Ort: Brownien
23 Beiträge
 
Delphi 5 Standard
 
#3

AW: Sieb des Eratosthenes

  Alt 5. Mai 2013, 09:29
Wäre Dein Sourcecode ordentlich formatiert, sollte es eigentlich offensichtlich sein.
Zunächst solltest du mit TryStrtoInt die Obergrenze aus dem Edit übernehme.
Dann solltest du die Obergrenze auf Gültigkeit prüfen und dann erst rechnen.
Ob Du mit Exit abbrichst oder mit If..else arbeitest ist wahrscheinlich von den Vorlieben Deines Lehrers abhängig.

Gruß
K-H
Leider hatten wir das mit dem TryStrtoInt noch nicht. Nur eben Exit und if...else wie du sagst.
mit 'Exit' funktioniert's jetzt auch, hab's einfach vergessen!^^
Aber trotzdem Danke für deine Hilfe!
Amanda Dermish-Knudsht
  Mit Zitat antworten Zitat
Benutzerbild von Descole
Descole

Registriert seit: 27. Apr 2013
Ort: Das Tokio Hotel
9 Beiträge
 
Delphi XE4 Ultimate
 
#4

AW: Sieb des Eratosthenes

  Alt 5. Mai 2013, 14:46
Vielen Dank noch mal an euch alle für eure Hilfe!
Justin Bibarel
I like trains
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

AW: Sieb des Eratosthenes

  Alt 13. Mai 2013, 19:52
Wie verprochen kommt hier meine "Musterlösung" für das Sieb des Eratosthenes.
Primzahlen bis 10 Mio. zu errechnen benötigt ~ 1 Min.

Wer Spass an Mathe und Delphi hat kann ja mal versuchen eine neue Klasse für das Sieb von Atkin zu schreiben.

Und dann gibt es auch noch das Sieb von Sundaram... (etwas komplizierter als Eratosthenes aber einfacher als Atkin zu implementieren)
Angehängte Dateien
Dateityp: zip Primzahlen.zip (2,4 KB, 43x aufgerufen)
fork me on Github
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Sieb des Eratosthenes

  Alt 14. Mai 2013, 07:20
Das Sieb von Atkin wurde in der DP bereits umgesetzt. Einfach mal suchen, allerdings nach 'Sieve of Atkins' (nicht Atkin).
  Mit Zitat antworten Zitat
Benutzerbild von info.noob
info.noob

Registriert seit: 15. Apr 2013
Ort: Brownien
23 Beiträge
 
Delphi 5 Standard
 
#7

AW: Sieb des Eratosthenes

  Alt 5. Mai 2013, 09:26
Überleg mal was hier passiert:
Delphi-Quellcode:
 if (edtZahl.Text='') then
 begin
   lblFehler.Visible:= true
 end
 else
 begin
   lblFehler.Visible:= false;
 end;
Das Programm läuft doch einfach weiter; da fehlt ein Exit; für den Fall dass die Eingabe nicht korrekt ist.
Stimmt! Das hab ich ja vollkommen vergessen! Jetzt funktioniert es auch, Danke!
Hier noch mal der Teil des Codes der verändert wurde:
Delphi-Quellcode:
begin
 if (edtZahl.Text='') then begin lblFehler.Visible:= true; Exit; end
 else begin
 lblFehler.Visible:= false;

 a:= StrtoInt(edtZahl.Text);
 if (a > 10000) then begin lblFehler3.Visible:= true ;Exit; end // Hab dann einfach 'Exit' hinzugefügt!
 else begin
 lblFehler.Visible:= false;
Sorry, dass ich jetzt noch etwas fragen muss, aber das ist jetzt wirklich die letzte Frage!
Bei der Memobox werden die Zahlen alle untereinander angezeigt, also eine Zahl eine Zeile. Ich würde es aber gern so haben, dass in jeder Zeile so viele Zahlen stehen, wie möglich, damit es übersichtlicher wird! Mein Lehrer hat was von nem String gesagt aber ich weiß nicht genau, was er meint...

Edit: Schon geklärt!^^ Habs hier gefunden!http://www.delphipraxis.net/159391-d...emo-box-2.html
Amanda Dermish-Knudsht

Geändert von info.noob ( 5. Mai 2013 um 12:09 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz