Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Fatorisierung - Ablauf korrekt, aber falsche Ergebnisse

  Alt 6. Feb 2007, 19:08
Herzlich willkommen in der Delphi-PRAXiS, Waldbärchen.

Dein Algortihmus liefert immer 1 als vorletzten PrimTeiler. Die 117 entsteht durch eine Unachtsamkeit beim Anhängen des endgültig letzten Teilers - ohne Trenner. Hat Klaus aber schon erkannt.

In deiner Faktorisierungsfunktion vermisse ich die klassische Fallunterscheidung:

Delphi-Quellcode:
function MinFactor(n: Int64): Int64;
begin
  if n < 1 then
    Result := 0
  else if n mod 2 = 0 then
    Result := 2
  else begin
    Result := 3;
    repeat
      if n mod Result = 0
        then Exit
        else Inc(Result, 2);
    until (Result * Result > n);
    Result := n;
  end;
end;
Nur ungerade Faktoren müssen in der Prüfschleife betrachtet werden.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat