Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#60

Re: Sehr schneller Primzahl-Finder

  Alt 23. Aug 2005, 20:28
probier mal:

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var counter: TCounter; i,j: Cardinal;
begin
  counter:=TCounter.Create(RealTime);

  i:=primes.IndexOf(1, True);
  j:=primes.IndexOf(500000000, False);

// for i:=i to j do
// primes[i];

  caption:=floattostr(counter.Stop);
  counter.Free;
end;
Die tatsächliche "Umrechnung" der Bitarrays[] mit Primes[i] ist irrelevant, da die Bitarrays[] intern schon alle Informationen welche Zahlen Primzahlen sind enthalten.

Benutzt du wie in deinem Beispiel .Indexof(5Mio) UND .Primes[i] so misst du die Laufzeit des Algos. ZWEIMAL !

Also entweder so:
Delphi-Quellcode:
  StartCounter;
  Primes.IndexOf(5Mio, False);
  StopCounter;
was absolut ausreichend ist da die Bitarrays[] intern nur eine andere Darstellung der Primzahlen sind.
Oder so:

Delphi-Quellcode:
  StartCounter;
  I := 0;
  while Primes[i] < 5000000 do Inc(I);
  StopCounter;
alles andere wäre sozusagen unfair da du zweimal die Laufzeit des Algos misst.

Gruß Hagen
  Mit Zitat antworten Zitat