![]() |
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:
Die möglichkeit, wie ich sie oben beschrieben habe ist sehr Zeitaufwendig..
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; Würde mich über Antwort freuen. |
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 |
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? |
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.. |
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... |
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 |
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. |
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:
Ich habe die Funktion noch nicht getestet, aber sie müsste funktionieren. Evtl. kann man das dann noch etwas optimieren.
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; Hinweis: Der Parameter n muss größer als zwei sein, damit die Funktion funktioniert. |
Re: In einer Listbox nach Strings suchen
Cool Danke
|
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 16:21 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 by Thomas Breitkreuz