Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Primzahlen in einem bestimmten Bereich errechnen (https://www.delphipraxis.net/145818-primzahlen-einem-bestimmten-bereich-errechnen.html)

Korg PA 2x Pro 8. Jan 2010 22:15


Primzahlen in einem bestimmten Bereich errechnen
 
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]

Torpedo 8. Jan 2010 22:20

Re: Primzahlen in einem bestimmten Bereich errechnen
 
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. :))

PPaB 8. Jan 2010 22:29

Re: Primzahlen in einem bestimmten Bereich errechnen
 
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;

Korg PA 2x Pro 8. Jan 2010 22:49

Re: Primzahlen in einem bestimmten Bereich errechnen
 
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

Luckie 8. Jan 2010 22:56

Re: Primzahlen in einem bestimmten Bereich errechnen
 
Ich frage mich, ob ein anderer Algorithmus nicht geeigneter wäre für das Problem.

Wolfgang Mix 8. Jan 2010 23:01

Re: Primzahlen in einem bestimmten Bereich errechnen
 
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]

PPaB 8. Jan 2010 23:24

Re: Primzahlen in einem bestimmten Bereich errechnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hab mal mein altes Programm ausgegraben
Schau es dir einfach an, so hab ich das gemacht. Zusätzlich werden noch Primzahlzwillinge angezeigt

Korg PA 2x Pro 9. Jan 2010 00:15

Re: Primzahlen in einem bestimmten Bereich errechnen
 
Vielen Dank, hat mir sehr geholfen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 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