... oder doch lieber rekursiv
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function Primfaktorzerlegung(n: Integer): String; var i: Integer; begin if (n mod 2 = 0) then begin Result := '2 * ' + Primfaktorzerlegung(n div 2); exit; end; for i := 1 to trunc(sqrt(n)) div 2 do begin if (n mod (2 * i + 1) = 0) then begin Result := IntToStr(2 * i + 1) + ' * ' + Primfaktorzerlegung(n div (2 * i + 1)); exit; end; end; Result := IntToStr(n); end; |
Bitte beide Funktionen nicht einfach übernehmen, da natürlich noch ein paar Verbesserungen nötig sind! (Gib mal einen negativen Wert bzw. 0 ein; auch die hin und wieder abschließende 1 ist nervig)
Gruß,
Markus