AGB  ·  Datenschutz  ·  Impressum  







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

In einer Listbox nach Strings suchen

Ein Thema von killerkarl · begonnen am 19. Jan 2005 · letzter Beitrag vom 20. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
killerkarl

Registriert seit: 19. Jan 2005
40 Beiträge
 
Delphi 7 Personal
 
#1

In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 13:53
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.
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#2

Re: In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 13:58
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
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 16:21
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?
Thomas H.
  Mit Zitat antworten Zitat
killerkarl

Registriert seit: 19. Jan 2005
40 Beiträge
 
Delphi 7 Personal
 
#4

Re: In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 16:30
Also es sind 315.948 Primzahlen
von 2 bis 4.499.969
das sind so ca.
99.823.138.704 Rechnungen...
Das dauert..
  Mit Zitat antworten Zitat
KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 17:29
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...
Thomas H.
  Mit Zitat antworten Zitat
killerkarl

Registriert seit: 19. Jan 2005
40 Beiträge
 
Delphi 7 Personal
 
#6

Re: In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 17:35
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
  Mit Zitat antworten Zitat
KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 17:40
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.
Thomas H.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 18:06
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.
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
killerkarl

Registriert seit: 19. Jan 2005
40 Beiträge
 
Delphi 7 Personal
 
#9

Re: In einer Listbox nach Strings suchen

  Alt 19. Jan 2005, 18:10
Cool Danke
  Mit Zitat antworten Zitat
KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: In einer Listbox nach Strings suchen

  Alt 20. Jan 2005, 17:38
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?
Thomas H.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:08 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