Целая часть логарифма - PullRequest
       26

Целая часть логарифма

0 голосов
/ 26 августа 2018

Пожалуйста, кто-нибудь знает, как вычислить целую часть натурального логарифма целого числа?

Предпочтительно использовать только целочисленную арифметику (сродни целочисленному квадратному корню метод), не полагаясь нас плавающей запятой log (т.е. не Math.floor(Math.log(x)).


Чтобы объяснить, почему этот вопрос не является дубликатом связанного вопроса: это касается натурального логарифма и, возможно, неограниченных входных данных, другой - для базы2 или 10 и имитирует с плавающей точкой 32-битную арифметику с фиксированной точностью. Другой вопрос также не объясняет, сколько фиксированных битов требуется для правильного вычисления целой части натурального логарифма неограниченного ввода.

1 Ответ

0 голосов
/ 26 августа 2018

Я надеюсь, что умножение разрешено.

Таким образом, вы можете применить экспоненциальный поиск (разновидность бинарного поиска), чтобы найти такую ​​мощность n, что

 e^n <= x < e^(n+1)
...