Thema: Delphi IsPowerOfN

Einzelnen Beitrag anzeigen

Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#1

IsPowerOfN

  Alt 23. Okt 2009, 14:02
Des öfteren möchte man testen, ob eine ganze Zahl (>=1) eine ganze Potenz von n (>=1) ist,
zb. 1,3,9,27,81,243 für n=3 usw. Die beiden nachfolgenden Funktionen erledigen das.

Anmerkung: Bei sehr großen Zahlen werden fehlerhafte Werte zurückgegeben.


Delphi-Quellcode:
//Wolfgang Mix - Delphi - PRAXiS
function LgX(base, number: Double): Double; //inline;
begin
  if (base <= 0.0) or (number <= 0.0) then
    System.Error(reInvalidOp);
  Result := Ln(number) / Ln(base); //plattformunabhängig
end;

//Wolfgang Mix - Delphi - PRAXiS
function IsPowerOfX(base, number: Double): Boolean;
begin
  Result := Frac(LgX(base, number)) < 1e-9;
end;
Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat