lmikle,
Цитата:
Сообщение от gremt
M и N не обязательно являются целыми числами
|
***
Все гораздо проще =)
На самом деле, достаточно воспользоваться определением логарифма.
Код:
function IsPower(N, M: Real): Boolean;
var
RealPower: Real;
begin
RealPower := ln(M) / ln(N); // это степень, в которую нужно возвести N, чтобы получить M
Result := (RealPower - Trunc(RealPower) < 1E-7); // проверяем степень близости к целому с допуском 1E-7
end;
Поскольку числа вещественные, обязательно должен быть какой-то допуск (я выбрала 1E-7), при непревышении которого степень будет считаться фактически целочисленной.