Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi In einer Listbox nach Strings suchen (https://www.delphipraxis.net/38437-einer-listbox-nach-strings-suchen.html)

killerkarl 19. Jan 2005 13:53


In einer Listbox nach Strings suchen
 
Moin also ich möchte gerne Primzahlen finden, für die gilt:

(p-1)/2 = Primzahl

Ich habe mir dazu eine Textdatei mit Primzahlen aus dem Netz gesogen..
Jetzt möchte ich vom höchsten Wert beginnend gucken ob dies zuftrifft, also praktisch
Delphi-Quellcode:
var i, j:Integer;
begin
for i:=Listbox1.Items.Count-1 downto 0
do begin
  for j:=0 to Listbox1.Items.Count-1
  do begin
    if FloatToStr((i-1)/2) = Listbox1.Items.Strings[j]
    then Listbox2.Items.Add(IntToStr(i)+' - ('+FloatToStr((i-1)/2)+')');
  end;
end;
Die möglichkeit, wie ich sie oben beschrieben habe ist sehr Zeitaufwendig..

Würde mich über Antwort freuen.

Dust Signs 19. Jan 2005 13:58

Re: In einer Listbox nach Strings suchen
 
1.) die Schleife muss downto laufen
2.) die Schleife muss bei 0 enden und bei listbox1.items.count -1 enden
3.) Ich versteh kein Wort von dem, was du schreibst. Primzahl hab ich irgendwo gelesen...

Dust Signs

KLS 19. Jan 2005 16:21

Re: In einer Listbox nach Strings suchen
 
Nun Strings vergleichen dauert eben...

Ich würde anders an die sache ran gehen. Zuerst aber die Frage in welchem Bereich liegen den die Zahlen?

killerkarl 19. Jan 2005 16:30

Re: In einer Listbox nach Strings suchen
 
Also es sind 315.948 Primzahlen
von 2 bis 4.499.969
das sind so ca.
99.823.138.704 Rechnungen...
Das dauert..

KLS 19. Jan 2005 17:29

Re: In einer Listbox nach Strings suchen
 
Also mein programm schafft es von 0-5.000.000 in 72s (laut Taskmgr). (P4 3GHz)

interesse am programm/ergebnissdatei?

Meine vorgehensweise:

ich berechne alle primzahlen von 0-5.000.000 und speichere diese in einem array.

dann berechne ich aus jeder dieser primzahlen den wert ((p-1)/2) besser ((p-1) shr 1) *g* und prüfe ob das ergebnis im primzahlenarray ist, fertig.

PS: das primzahlenprogramm ansich hatte ich bereits, ich hab es nur ergänzt.


Wenn ich irgendwas falsch verstanden habe, dann sag es mir bitte *g*

die ersten paar Zahlen unter 100

5
7
11
23
47
59
83

EDIT: es gibt "nur" 348.513 Primzahlen im bereich 0-5.000.000
Edit2: Ja ich werd mir abgewöhnen immer leerzeilen zu machen...

killerkarl 19. Jan 2005 17:35

Re: In einer Listbox nach Strings suchen
 
Cool
Wäre auf jeden Fall cool, wenn du mir mal das ganze Prog (projekt, unit und co) schicken kannst...
Ich wäre sowieso interessiert, wie man die Primzahlen ausrechnet..
matze.brandt@freenet.de
merci

KLS 19. Jan 2005 17:40

Re: In einer Listbox nach Strings suchen
 
Kein problem, aber der code ist schon reichlich optimiert... fehlt eigentlich nur noch das den jemand zu asm macht *g*

ich hab das in einer konsolenanwendung.

Binärbaum 19. Jan 2005 18:06

Re: In einer Listbox nach Strings suchen
 
Mit folgender Funktion müsste man Primzahlen ausrechnen können. Die Funktion gibt für jede übergebene Zahl (>2) True zurück, wenn es eine Primzahl ist, sonst False.

Delphi-Quellcode:
function IstPrim(n: Cardinal): Boolean;
var i,grenze: Integer;
begin
 Result:= True;
 if (n mod 2)=0 then
 begin
  Result:= False;
  Exit;
 end;
 i:= 3;
 grenze:= Trunc(sqrt(n)) +1;
 while ((i<=grenze) and Result) do
 begin
  Result:= (((n mod i)<>0) and (i<>n));
  i:= i+2;
 end;
end;
Ich habe die Funktion noch nicht getestet, aber sie müsste funktionieren. Evtl. kann man das dann noch etwas optimieren.

Hinweis: Der Parameter n muss größer als zwei sein, damit die Funktion funktioniert.

killerkarl 19. Jan 2005 18:10

Re: In einer Listbox nach Strings suchen
 
Cool Danke

KLS 20. Jan 2005 17:38

Re: In einer Listbox nach Strings suchen
 
Hoi, ich hab noch ein wenig optimiert, jetzt brauch ich nicht mehr 72s sondern nur 0,1616s. ;)

Noch mal interesse, oder reicht dir das was du hast?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 Uhr.
Seite 1 von 2  1 2      

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