[#] [Перевод] Умножение по методу русских крестьян
habrabot(difrex,1) — All
2015-12-20 12:00:03


Иногда этот метод называют «крестьянское умножение», иногда «древнеегипетское», иногда «эфиопское», иногда «умножение через удвоение и деление пополам». Некоторым он хорошо известен, некоторым – непонятен, но при этом он достаточно полезен и может использоваться не только для умножения, но и для возведения в степень и расчётов матриц.

#### Алгоритм



13 x 19 -> 0
6 38 19
3 76 ->
1 152 -> 95
0 304 247



Запишем два перемножаемых числа рядом – они станут заголовками двух столбцов. Третий столбец будет содержать нарастающую сумму. Если число в левом столбце нечётное, мы добавляем число из правого столбца в нарастающую сумму. Изначально она будет равна нулю. Затем в левом столбце ниже мы записываем число из заголовка, делённое пополам (с отбрасыванием остатка). 13 / 2 = 6. А во втором столбце мы пишем число, равное удвоению заголовка столбца, 19\*2 = 38. Поскольку число в левом столбце чётное, мы не увеличиваем нарастающую сумму. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/273525/#habracut