AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Primzahlen in einem bestimmten Bereich errechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Primzahlen in einem bestimmten Bereich errechnen

Ein Thema von Korg PA 2x Pro · begonnen am 8. Jan 2010 · letzter Beitrag vom 9. Jan 2010
Antwort Antwort
Korg PA 2x Pro
(Gast)

n/a Beiträge
 
#1

Primzahlen in einem bestimmten Bereich errechnen

  Alt 8. Jan 2010, 22:15
Hallo Leute, ich habe ein kleines Problem ich soll ein Programm in Delphi schreiben, dass alle Primzahlen errechnet in einem Bereich, den man vorher in zwei Edit feldern festlegt und diese dann in einer Listbox ausgeben.

Hier ist mein bisheriger Quelltext! Könnte bitte mal jemand drüber gucken und mit weiter helfen?
Bedanke mich schon einmal im vorraus.


Delphi-Quellcode:
procedure TForm1.btn_berechnenClick(Sender: TObject);
var a, b, x, y: integer;
    prim: boolean;
begin

x:= strtoint (edt_von.Text);
y:= strtoint (edt_bis.Text);

for a:= x to y do
begin
if a <= 100 then
prim := true;
end; //von begin

for b:= 2 to a do
begin
if b <= a then
if a mod b = 0 then
prim := false;
end; //von begin

begin

listbox_ausgabe.Items.Add (inttostr(b));

end; // von begin
end;
end.
[edit=Luckie]Delphi-Tags. Beim nächsten Mal bitte selber setzen. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#2

Re: Primzahlen in einem bestimmten Bereich errechnen

  Alt 8. Jan 2010, 22:20
Kannst du in Worten beschreiben, was du mit dem Stück Code machen wolltest? Dann kann man besser sagen, was davon du falsch gemacht hast und wieso. )
  Mit Zitat antworten Zitat
PPaB

Registriert seit: 23. Jan 2009
35 Beiträge
 
#3

Re: Primzahlen in einem bestimmten Bereich errechnen

  Alt 8. Jan 2010, 22:29
Ok ich verstehe das jetzt so:

Delphi-Quellcode:
For a:= x to y do
begin
if a <= 100 then
prim := true;
end; //von begin
Hier wird erstmal geschaut, ob die Zahl kleiner als 101 ist, äh wieso eigendlich?
Darf der Bereich maximal bis 100 gehen?
Würde die Zeile mit dem if einfach weglassen.

Delphi-Quellcode:
for b:= 2 to a do
begin
if b <= a then
if a mod b = 0 then
prim := false;
end; //von begin
Und hier wird dann geschaut, ob man irgendwann ohne Rest teilen kann und dann ist die Zahl keine Primzahl.

Delphi-Quellcode:
begin

listbox_ausgabe.Items.Add (inttostr(b));

end; // von begin
Da fehlt meiner Meinung nach noch eine If-Abfrage, ob prim = True ist!

Edit: Ich würde das so schreiben:

Delphi-Quellcode:
procedure TForm1.btn_berechnenClick(Sender: TObject);
var a, b, x, y: integer;
    prim: boolean;
begin

x:= strtoint (edt_von.Text);
y:= strtoint (edt_bis.Text);

for a:= x to y do
begin //soweit ist alles ok
prim := true;

for b:= 2 to Round(a/2) do //man muss nur bis zur Hälfte gehen, da danach sowieso keine Reslosen Mengen mehr entstehen
begin
if a mod b = 0 then //Dann brauchst du hier auch keine weitere if-Schleife mehr
prim := false;
end; //von begin

if prim = True then
listbox_ausgabe.Items.Add (inttostr(b));

end; // von begin
end;
  Mit Zitat antworten Zitat
Korg PA 2x Pro
(Gast)

n/a Beiträge
 
#4

Re: Primzahlen in einem bestimmten Bereich errechnen

  Alt 8. Jan 2010, 22:49
Hallo, vielen Dank für Deine schnelle Hilfe ich bin ein Stück weiter gekommen. Allerdings wird jetzt mein bereich nicht beachtet den ich vorher festgelegt habe! Es werden nur noch Primzahl bis 50 errchnet anstatt bis 100 die ich für y eingegeben hatte. Außderdem werden manche Zahlen doppelt ausgegeben. Hast Du noch eine Idee woran es liegen könnte ? Habe jetzt alles genauso gemacht wie Du es vorgeschlagen hattest.

Vielen Dank im vorraus. Korg PA 2x Pro
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Primzahlen in einem bestimmten Bereich errechnen

  Alt 8. Jan 2010, 22:56
Ich frage mich, ob ein anderer Algorithmus nicht geeigneter wäre für das Problem.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Primzahlen in einem bestimmten Bereich errechnen

  Alt 8. Jan 2010, 23:01
Sollte man nicht erst einmal alle geraden Zahlen außer der 2
von der Suche ausschließen?

[Edit] Erste Suche hier im Forum liefert mir mit den Suchworten
Primzahlen und Sieb 28 Hits [/Edit]
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
PPaB

Registriert seit: 23. Jan 2009
35 Beiträge
 
#7

Re: Primzahlen in einem bestimmten Bereich errechnen

  Alt 8. Jan 2010, 23:24
hab mal mein altes Programm ausgegraben
Schau es dir einfach an, so hab ich das gemacht. Zusätzlich werden noch Primzahlzwillinge angezeigt
Angehängte Dateien
Dateityp: rar primzahlen___primzwillinge_150.rar (211,6 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
Korg PA 2x Pro
(Gast)

n/a Beiträge
 
#8

Re: Primzahlen in einem bestimmten Bereich errechnen

  Alt 9. Jan 2010, 00:15
Vielen Dank, hat mir sehr geholfen!
  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 01:39 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