Einzelnen Beitrag anzeigen

Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#12

Re: MJFunctions - kleine Funktionssammlung

  Alt 11. Mai 2007, 12:12
Ich habe mir mal deinen Primzahltest angeschaut, der ist aber vergleichsweise langsam.
Delphi-Quellcode:
function Prim(Value: Cardinal): Boolean;
var
 i : Cardinal;

begin
 if Value = 2 then Result := True
 else
  begin
   Result := False;
   for i := 2 to Trunc(Sqrt(Value)) + 1 do
    begin
     if Value mod i = 0 then
      begin
       Result := False;
       Break;
      end
     else Result := True;
   end;
  end;
end;
Ich würde ihn so schreiben.
Delphi-Quellcode:
function Prim(Value: Cardinal): Boolean;
var
i : Cardinal;
begin
  Result := false;
  if (Value<=1) or ((Value mod 2=0) and (Value<>2)) then
    exit;
  Result := true;
  if Value=2 then exit;
  i := 3;
  while i<=Trunc(Sqrt(Value)) + 1 do
  begin
    if Value mod i = 0 then
    begin
      Result := false;
      exit;
    end;
    Inc(i, 2);
  end;
end;
Ich weiß, dass es bestimmt noch Methoden gibt diese Funktion zu verschnellern, aber meine ist schon mal bei großen Zahlen fast doppelt so schnell, da sie in 2er-Schritten zählt.
Willy Scheibel
  Mit Zitat antworten Zitat