Сегодня будем считать логарифм.
Для простоты по основанию 2.
То есть для любого числа w надо назвать такое число x, что 2
x = w.
Это обозначается так: x = log
2w.
Логарифмы (для вещественных чисел) можно считать только для w > 0. Для других случаев он определяется иначе, уходя в комплексную область чисел, а в 0 устремляясь к одной из бесконечностей.
И так, w > 0. Если w = 1, то его логарифм равен 0, так как 1 = 2
0.
Если w < 1 (но w > 0) тогда вычислим 1/w и уже от него будем дальше считать логарифм, просто запомним, что перед ним надо будет написать знак "-", он будет отрицательным.
Отбросив все тонкости имеем условие w>1, надо определить в какой степени число 2 даст такое число w.
То есть решить уравнение: w = 2
x, при w > 1.
Алгоритм:
Надо определить целое число n, такое чтобы: 1 <= w/(2
n) < 2
Это будет целая часть числа x.
w/(2
n) = 2
x-nЗначение (x-n) лежит между 0 <= (x-n) < 1 и чтобы узнать следующую десятичную цифру числа x надо возвести обе части выражения в степень 10. Получим:
(w/(2
n))
10 = 2
(x-n)*10Теперь новое значение w' = (w/(2
n))
10, а найти надо снова первую целую цифру числа (x-n)*10, она как раз лежит в 0 <= (x-n) < 10, снова действуем так же, только с новым уравнением: w' = 2
x'Продолжая так делать мы сможем найти последующие цифры исходного числа x, тем самым вычислив логарифм исходного числа w.
Пример: log
230
16 <= 30 < 32, значит целая часть степени равна
4 (2
4 = 16).
30/16 = 1.875
----------------
Далее хвостик: log
21.875
Возведём 1.875 в 10 степень и найдём целую часть логарифма.
1.875
10 = 537.04752644989639520645141601563
512 <= 537.04752644989639520645141601563 < 1024
Значит вторая цифра логарифма это
9 (2
9 = 512)
537.04752644989639520645141601563/512 = 1.0489209500974538968876004219055
----------------
Следующий хвостик: log
21.0489209500974538968876004219055
Возведём опять в степень 10.
1.0489209500974538968876004219055
10 = 1.6122322217108406432700103917809
1 <= 1.6122322217108406432700103917809 < 2
Хороший случай, значит третья цифра это
0 (2
0 = 1)
----------------
Хвостик: log
21.6122322217108406432700103917809
Возведём опять в степень 10.
1.6122322217108406432700103917809
10 = 118.65224672328065554328088882849
64 <= 118.65224672328065554328088882849 < 128
Четвёртая цифра это
6 (2
6 = 64)
118.65224672328065554328088882849/64 = 1.8539413550512602428637638879451
----------------
Хвостик: log
21.8539413550512602428637638879451
Возведём опять в степень 10.
1.8539413550512602428637638879451
10 = 479.6891791112607334627100837127
256 <= 479.6891791112607334627100837127 < 512
Пятая цифра это
8 (2
8 = 256)
479.6891791112607334627100837127/256 = 1.8737858559033622400887112645027
----------------
Хвостик: log
21.8737858559033622400887112645027
1.8737858559033622400887112645027
10 = 533.5800261099443896324773924383
512 <= 533.5800261099443896324773924383 < 1024
Шестая цифра это
9 (2
9 = 512)
....
И так: log
230 = 4.90689...