Einzelnen Beitrag anzeigen

pirechner

Registriert seit: 29. Jun 2004
36 Beiträge
 
Delphi 7 Professional
 
#2

Re: Sehr schneller Primzahl-Finder

  Alt 28. Nov 2004, 16:28
tag auch
ich befasse mich jetzt auch schon etwas länger mit primzahl berechnung/ findung.
WEgen der unglaublichen schnelligkeit wollte ich jetzt mal fragen wie viel hz dein rechner hat?
meiner hat bescheidene 392mhz und schaft mit meinem code in sechs sekunden 120.000 primzahlen zu finden.

Code:
procedure tprimzahlen.findeprimzahlen;
var lauf: int64;
    //laufzwei: integer;
    wurzelderletztenprz : extended;
begin
  repeat
    lauf:= 2;
    wurzelderletztenprz:= sqrt(speicherarray[anzahlprimzahlen]);
      repeat
        hilf:= speicherarray[lauf];
        inc(lauf);
        if zahl mod hilf = 0  //zahl ist keine primz weil sie einen teiler hat
        then begin
          zahl:= zahl + 2; //hier passiert das gleiche wie wenn es eine primzahl wäre
          lauf:= 2;       //bloß das keine zahl geschrieben wird und die zahl damit übergangen wird
          wurzelderletztenprz:= sqrt(speicherarray[anzahlprimzahlen]);
        end
       until hilf -1 > wurzelderletztenprz; //brauch nur bis zur hälfte danach ists sinnlos
      inc(anzahlprimzahlen);
      speicherarray[anzahlprimzahlen]:= zahl;
      application.ProcessMessages;
    zahl:= zahl + 2;
  until stop = true;
end;
verlangsamt wird bei mir die ganze sache durch application.processmessages ohne die mein programm aber logischer weise nicht mehr aus der repeat-schleife käme.

p.s. kann es sein dass du nur überprüfst ob die zahlen durch zwei, drei und fünf teilbar sind?
  Mit Zitat antworten Zitat