AGB  ·  Datenschutz  ·  Impressum  







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

Prozedur beschleunigen....

Ein Thema von gordon freeman · begonnen am 1. Dez 2004 · letzter Beitrag vom 1. Dez 2004
Antwort Antwort
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#1

Prozedur beschleunigen....

  Alt 1. Dez 2004, 15:39
Hi Leute,
ich hab folgende Prozedur zur Berechnung aller Primzahlen von a bis b geschrieben.
Hier der Code:

Delphi-Quellcode:
var Primzahlen: array of boolean;
    a,b,i,primkandidat,nichtprim:integer;
    Start,Stop,Freq:int64;
    Liste:TStrings;
begin

Listbox1.Items.Clear;

a:=strtoint(edit1.text);
b:=strtoint(edit2.text);
SetLength(Primzahlen,b);


Primzahlen[1] := true;

for primkandidat:=2 to b do
    if Primzahlen[primkandidat]=false then
       begin
       nichtprim:=primkandidat*2;
       while nichtprim <= b do
          begin
          Primzahlen[nichtprim] := true;
          Inc(nichtprim,primkandidat);
          end;
       end;

for i:=a to b do
    if primzahlen[i] = false then
       Listbox1.Items.Add(inttostr(i));

Mit der Rechnung bin ich im großen und ganzen ziemlich zufrieden, nur an der Ausgabe hapert's noch. Im Moment gebe ich die Zahlen von a bis b in 'ner Listbox aus. Das dauert allerdings doch einige Zeit. Da ich die Ausgabe beliebig gestalten kann dürften die Zahlen auch z.B. in einer Datei gespeichert werden. Aber bei all meinen Versuchen, war die Listbox-Variante bis jetzt die schnellste. Da ich bei dieser Routine voll auf Schnelligkeit baue hab ich auch das
obligatorische Application.Processmessages weggelassen, also Vorsicht!


Egal welche Vorschläge jetzt kommen, ich kann alles gebrauchen, das den Code beschleunigt!

tia, gordon
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Prozedur beschleunigen....

  Alt 1. Dez 2004, 15:41
Benutze ListBox1.Items.BeginUpdate vor und Listbox1.Items.EndUpdate nach der Schleife, wo die Einträge hinzugefügt werden.
Das verhindert, dass ständige neuzeichnen und sollte einiges an Zuwachs bringen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Maa83

Registriert seit: 7. Nov 2002
220 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Prozedur beschleunigen....

  Alt 1. Dez 2004, 15:45
also: wieso hast du ein array of Boolean?
nimm doch einfach eine StringListe und sage jedesmal statt Primzahlen[nichtprim] := true;

StringListe.Add(IntToStr(Primzahl));

danach kannst du dieses viel leichter ausgeben.

Dennoch kapier ich deine Methode nicht so ganz. Bekommst du damit wirklich nur Primzahlen?
Martin
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Prozedur beschleunigen....

  Alt 1. Dez 2004, 15:53
@jim_raynor thx, das gibt 'ne Menge an Performance

@Maa83 Jepp, bekomme dabei nur Primzahlen raus. dAs ganze nennt sich das Sieb des "Sieb des Eratosthenes" einfach mal googeln, da gibts gute Erklärungen zu!
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Prozedur beschleunigen....

  Alt 1. Dez 2004, 20:47
Bei der ermittlung der primzahlen gibts noch was zu verbessern:

mach mal aus:
for primkandidat:=2 to b do folgendes:
for primkandidat:=2 to trunc(sqrt(b)) do mfg
  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 09:47 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