Вот как его попробовать

Математические гении из канала Numberphile возродили древний алгоритм умножения, известный как «уполовинить и удвоить», «крестьянская математика», «египетская математика» или, как его описывает ведущий математического блога Джонни Болл, «русское умножение».
Чтобы применить этот метод, сначала запишите два числа, которые вы хотите перемножить, в верхней части двух столбцов. В левом столбце постепенно делите число пополам и отбрасывайте дробную часть от любого значения (половинки) так, чтобы дойти до 1. В правом столбце удваивайте число столько раз, сколько цифр содержит число в левом столбце.

Заполнив таблицу, просмотрите её и удалите все строки, в левом столбце которых указано чётное значение. Сюда входит и исходный множитель в первой строке.

Теперь, когда вы сложите оставшиеся числа в правой колонке, вы получите ответ.

Этот метод работает для всех чисел и действует независимо от того, как вы расположите исходные множители.

Погодите, как это работает?
Джонни Болл представляет этот метод как забавное занятие, которому его научили давным-давно, когда он проводил время в «детской комнате» паба. (Никогда не меняйся, Британия!) Человек, который научил его этому, называл это русским умножением, и Болл объясняет, что этот метод возник не в России, а тысячи лет назад в древнем Египте. И, что очень важно, этот метод связан с двоичной системой счисления.
Двоичной системой называют систему счисления с основанием 2, в которой значения представляются цифрами 0 и 1, а разряды являются степенями числа 2. Ниже приведены несколько целых чисел, записанных в двоичном виде, чтобы вы могли увидеть значение в каждой позиции.

Если вам кажется, что метод «деления пополам и удвоения» хотя бы внешне напоминает удвоение двоичных значений от столбца к столбцу, то вы правы. Преобразование десятичных (база 10) чисел в двоичные похоже на поиск сдачи: вы находите наибольшую купюру, которая соответствует вашему числу, не превышая его, а затем вычитаете её. Затем вы находите наибольшую купюру, которая соответствует вашему новому числу, не превышая его, и вычитаете её.
Древние люди всё равно должны были заниматься математикой, но представьте, как было бы сложно вычислять даже довольно простые вещи без черновиков — или если вас никогда не учили писать. Метод, которому учат большинство детей в школе, — длинное умножение — включает в себя много шагов с отдельными произведениями, которые нужно записывать и позже комбинировать. Уполовинивание и удвоение позволяли нашим предкам использовать физические счётные палочки и выполнять вычисления путём «сдачи».
Лично я большую часть видео Numberphile думала, не является ли этот метод трюком, подобным тому, который основан на математических фактах о цифре 9, и который позволяет вам каждый раз угадывать число, загаданное человеком. И, возможно, вы также задавались вопросом об исключениях из этого метода. Насколько я могу судить, их действительно нет. Даже степени двойки раскладываются так, что вы вычёркиваете всё в обеих колонках, кроме последней — фактически, последней «1», — и это единственное значение и является вашим ответом.

Комментарии (89)

nin-jin
21.01.2026 08:36Пипец какое замороченное умножение, где приходится делать кучу куда более сложных делений. Есть метод проще, где всего три простые операции в уме:
9*27 = 10*27 - 27 = 270 - 30 + 3 = 240 + 3 = 243 9*32 = 10*32 - 32 = 320 - 30 - 2 = 290 - 2 = 288
killyself
21.01.2026 08:36А дальше можно обычное инженерное 93*94 = 8100 + x, пускай будет ~10 000, ну ладно 9

nin-jin
21.01.2026 08:3693*94 = 10_000 - 7*100 - 6*100 + 6*7 = 10_000 - 1300 + 42 = 8_700 + 42 = 8742

Mad_gulls
21.01.2026 08:36Для примерного счета можно использовать двойное округление вверх с вычетанием.
93*94 ~ 93*100 - 6*90 ~ 8760
54*94 ~ 54*100 - 6*50 ~ 5100

oYASo
21.01.2026 08:36Аналогично, считаю всегда также.
Даже в более сложных кейсах так проще разложить, а потом собрать:
7 * 27 = 10 * 27 - 3 * 27 = 10 * 27 - 3 * 30 + 3 * 3 = 270 - 90 + 9 = 189Несмотря на сложную запись, в голове это считается почти мгновенно.

Calculater
21.01.2026 08:36Чтобы умножать на 7, иногда проще умножить на 5 (несложно приписать нолик даже в уме и поделить на два) и дважды докинуть множимое. Впрочем, все это уже есть в разных книжках по устному счету, да даже в вики.

offt
21.01.2026 08:36Описание метода какое-то кривое (кривой перевод?), да и во втором примере, при перемене мест множителей оно не выполняется. "В правом столбце удваивайте число столько раз, сколько цифр содержит число в левом столбце." - надо просто удваивать.

Dee3
21.01.2026 08:36Тоже голову сломал читая эту концепцию. 9 27 0 - в левом столбце - 9 - одна цифра. Один раз удвоил.
И 27 * 9 = ну два раза 9 удвоил и всё?)
Кстати есть статья из 2015 тоже с кривым переводом

tharsedX
21.01.2026 08:36Это они еще счет древних русов не видели

PowerMetall
21.01.2026 08:36Это они еще счет древних русов не видели
А уж что у ящеров было, мм... )))

aamonster
21.01.2026 08:36Да ну, в десятичной системе удобнее и быстрее в десятичный столбик считать, а не в двоичный.

bkar
21.01.2026 08:36Ну, 150 лет назад вес, длинну, время, объём, количество, и, самое главное, деньги - в русской деревне всё считалось в двоичной системе. А такие невообразимо сложные вещи, как возраст или день года, вообще не считались, а отсчитывались от приметного события.
Если ещё на нескролько веков назад отмотать, то в русском языке, помимо единственного и множественного, есть ещё и двойственное число.
Сейчас нас сплошь окружает десятичная система. Чтобы посчитать в двоичной и понять, сколько же это, надо ещё туда-сюда в двоичную систему и обратно перевести. А раньше - наоборот:
Два-пять шапок серебра!
То, есть, это будет десять?
Царь велел тотчас отвесить.

randomsimplenumber
21.01.2026 08:36Два-пять шапок серебра!
Римское V - пятерня, 5 пальцев. Римское Х - 2 пятерни.

bkar
21.01.2026 08:36Римские цифры изобрели, чтобы записывать ( долг : )). ) на счётной палочке. Для этого они идеальны.

aamonster
21.01.2026 08:36Ну, 150 лет назад вес, длинну, время, объём, количество, и, самое главное, деньги - в русской деревне всё считалось в двоичной системе.
Одноразрядные, что ли? 0 или 1?

bkar
21.01.2026 08:36Ну, слушайте, расскажу про винишко, знанием иных мер вам врят ли в жизни пригодится блеснуть.
В винном бочонке два полубоченка
В полубоченке две корчаги
В корчаге два ведра
В ведре два полуведра
В полуведре две четверти
В четверти две получетверти или же две двойные бутыли
В получетверти две бутылки
В бутылке три!!! стакана
В бутылке же две косушки
В косушке две чарки
В чарке два шкалика
А шкалик, это примерно дринк, на современный англицкий манер.
Кстати, английский фунт, одна из последних денежных единиц, перешедших на десятичную систему, ажно в 1971 году. До этого была двоичная (с добавочным хитрым перепрыгом между полукроной и фартингом).

randomsimplenumber
21.01.2026 08:36В ведре два полуведра
Дикая природа удивительна.

exTvr
21.01.2026 08:36И непредсказуема.

randomsimplenumber
21.01.2026 08:36В бутылке три!!! стакана
Тут вам не пинты в галлоны пересчитывать ;)

DaneSoul
21.01.2026 08:36Если ещё на нескролько веков назад отмотать, то в русском языке, помимо единственного и множественного, есть ещё и двойственное число.
А если отмотать много веков и переместиться южней, то в древней Месопотамии использовалась шестидесятеричная система исчисления.
Собственно говоря, часы до сих пор на ней основаны.

Cubus
21.01.2026 08:36GCC использует этот алгоритм, для платформ, у которых нет аппаратного умножения. Например, для простейших RISC-V.
Там, где мы в C напишем
uint32_t a, b; // Тут мы получаем откуда-нибудь значения // ... // А вот тут как раз наше умножение uint32_t c = a + b;GCC вставит функцию по ссылке выше, если в чипе нет умножения.

COKPOWEHEU
21.01.2026 08:36Потому что этот алгоритм - то же умножение в столбик, только в двоичной записи.
"крестьянское умножение"9 27 --- 9 27 | 27 4 54 | 0 2 108 | 0 1 216 | 216 --- 216 + 27 = 243И умножение в столбик
9 = 1001₂
27 = 11011₂. 11011 . 1001 ----------- 1| 11011 | 27 * 1*2⁰ = 27 | Вот "27", появившаяся при нечетной 9 0| 0 | 27 * 0*2¹ = 0 0| 0 | 27 * 0*2² = 0 1| 11011 | 27 * 1*2³ = 216 | Вот "216", появившаяся при нечетной 1 ----------- . 11110011 | 216 + 27 = 243

kotlomoy
21.01.2026 08:36Тут первый множитель раскладывается на сумму степеней двойки
9х27 = (2х2х2+1)х27 = 216+27
27х9 = (2х2х2х2+2х2х2+2+1)х9 = 144+72+18+9
При такой записи столбиком получается кэширование и переиспользование результатов. Интересно, но обычное умножение столбиком гораздо быстрее.

ArtyomOchkin
21.01.2026 08:36И это новый способ умножения? Только путает, имхо.
27×9=3*9*9=3*3²*3²=3⁵=243 // просто приводим к степеням тройкиКогда нельзя просто привести к такому удобному виду, всё равно множители в числах можно перегруппировать, и это будет гораздо удобнее заумных способов.
А вот из действительно удобного, например в процентах, можно представить 40% от 75 как 75% от 40 (перевернуть наоборот), и так практически с любыми, т.к. это по сути аналогично a×b=b×a.

Dimly
21.01.2026 08:36За проценты спасибо, а степени тройки в топку. Вопервых частный случай, замучаешься искать в большинстве случаев. А во вторых три в пятой - нифига не проще чем перемножить столбиком.

LeonidasBanderas
21.01.2026 08:36Уверен, есть простой способ через π сделать

Mingun
21.01.2026 08:36Ага, его еще очень практиковали в средние века, используя серебристые и желтые кругляшки.

vadimr
21.01.2026 08:36На небольшие степени двойки так проще всего умножать в уме, а на нечётные числа очень заморочено.

RulenBagdasis
21.01.2026 08:369 * 27 = 9 * 30 - 9 * 3
9 * 27 = 10 * 27 - 27Так гораздо быстрее, как по мне.

Ubuntaykin
21.01.2026 08:36В книге "Структура и интерпретация компьютерных программ" (SICP) этот метод назван "методом русского крестьянина".

CorwinH
21.01.2026 08:36Это алгоритм быстрого умножения (через сложение). Буквальный аналог быстрого возведения в степень (через умножения). Предназначен для тех, кто не знает таблицу умножения.
Чтобы умножать столбиком, нужно месяц учить таблицу умножения. А этот алгоритм можно освоить за несколько минут.
static long Power(long x, int n) { var result = 1L; while (n > 0) { if ((n % 2) == 0) { x *= x; n /= 2; } else { result *= x; --n; } } return result; }В строках 8 и 13 заменяем умножение на сложение.
static long Mul(long x, int n) { var result = 0L; while (n > 0) { if ((n % 2) == 0) { x += x; n /= 2; } else { result += x; --n; } } return result; }

2er6e1
21.01.2026 08:36Судя по источникам, "Американский" в заголовке этой статьи - это неприличное обобщение, а "русский способ" - должно быть заключено в кавычки.

punhin
21.01.2026 08:36Интересный метод! Но не для применения, а для понимания, как можно смешать двоичную и десятичную системы счисления.

Krenodator
21.01.2026 08:36Ценность тут именно в том, что десятичная арифметика внезапно сводится к очень простым операциям

x4mmm
21.01.2026 08:36Умножать надо через FFT, так быстрее.

ahabreader
21.01.2026 08:36* каждый раз, когда вам приходится перемножать числа от гугола-в-тысячной.
Schönhage–Strassen ... asymptotically faster than older methods such as Karatsuba and Toom–Cook multiplication, and starts to outperform them in practice for numbers beyond about 10,000 to 100,000 decimal digits
А теперь мы вам расскажем, как быстро перемножить матрицы такого размера...

Palesandr
21.01.2026 08:36не понял )) объясните
7 * 41 = ?
7 | 41
3 | 82
1 | 164
164 + 41 = 205, а должно 287
Calculater
21.01.2026 08:36Надо удалять строки, в которых есть четные ЗНАЧЕНИЯ, а не строки с четным номером. Здесь ни одного четного, поэтому ответ 41+82+164=287.

TimurZhoraev
21.01.2026 08:36Можно также умножать на 11 - посредине сумма крайних цифр
и прочие приёмы, чтобы свести к данным правилам, равно как для цифр, близких к 10 сложением-вычитанием
как сумма-разность квадратов итд. Ну и конечно же
(логарифмическая линейка), включая поиск по LUT. То есть достаточно запомнить хотя бы 2,4,8,16...65536. Включая метод последовательных итераций с остатками от деления, метод Ньютона применимо к умножению и др.
,
, найти
приближающее дробь к
за минимум итераций.

fatsgroove
21.01.2026 08:36конкретно с умножением на 9 первое что приходит в голову 27*10 - 27)

Krenodator
21.01.2026 08:36С девяткой много таких приёмов, она вообще "удобная" в десятичной системе

unC0Rr
21.01.2026 08:36Вообще, приёмы умножения и проверки делимости хорошо переносятся на другие системы счисления, просто вместо 9 для системы счисления с основанием n аналогичный способ будет для умножения на (n-1).

2_bytes
21.01.2026 08:36"В правом столбце удваивайте число столько раз, сколько цифр содержит число в левом столбце"
Зачем вводить читателей в заблуждение? Так не работает. Умножаем 25 на 2525 - 25
12 - 100 (удвоили дважды, потому как к левом столбце две цифры)
6 - 200
3 - 400
1 - 800Ответ 800+400+25=1225. Да?
На самом деле удваивать надо всегда только один раз. Сам метод - хорошее упражнение для обучающихся программированию на инвариант цикла. Ну или для детей, изучающих математику - на индукцию. Доказывать удобнее, если представить, что сложение мы ведем по мере добавления строк и работаем с тройками чисел x, y, z. Вначале полагаем, что x и y наши множители, а z=0. Дальше делаем следующее:при четном x уполовиниваем x, удваиваем y, переписываем z.
при нечетном x делаем то же, но дробную часть x отбрасываем, а z увеличиваем на y из предыдущей строки
Тогда в каждой строке x*y+z равно произведению первоначальных чисел. Поскольку в конце x=1, нам остается только подсчитать y+z. База индукции очевидна, шаг при четном x - тоже, шаг при нечетном x предоставляется читателю в качестве самостоятельного упражнения :)

ivanoff999
21.01.2026 08:36Гораздо проще считать в уме!

TimurZhoraev
21.01.2026 08:36вот это кстати идея. То есть представлять не цифры, а их заменители, позволяющие быстро считать. Например, треугольники, N-угольники и их пересечение, как некий код который можно преобразовать в число. Кстати интересный вопрос - есть ли не геометрическое доказательство что

stalker_316
21.01.2026 08:36Какое-то время назад была статья о том, как доказывать теорему Пифагора каким-то неведомым простым способом) Эта, видимо, в продолжение)
Newpson
В голове:
27*9 = 180+63 = 243
32*9 = 270+18 = 288
16*12 = 160+32 = 192
venanen
Это пока все в 3 операции укладывается в голове. А вот умножить 17 на 16 уже сложнее, потому что нужно 170 + 7*16, а это ещё одно разложение (70+42), итого 4 операции. Это уже сложно в голове держать.
Вообще, если чисто близко к круглому, как ниже уже сказал nin-jin, лучше не суммировать, а вычитать из круглого произведения. Получится 20 × 16 - (16 × 3) = 320 - 48 = 272.
ri1wing
Частный случай, конечно, но таблицу квадратов до 20 мы в школе учили
17 * 16 = 17^2 - 17 = 289 - 17 = 272
upd: ну или наоборот 16^2 + 16 = 256 + 16 = 272
NAVi-GATOR
"умножить 17 на 16" это точно не "170 + 7*16" Лучше расписывать сразу подробнее, чтобы не ошибаться: 17*10 + 17*6. А по сути - именно подобный быстрый счёт со знанием таблицы умножения оптимален для массового обучения младших школьников. Более древние методики хоть и полезны для кругозора, но не так эффективны для человеческого разума, в том числе описанный в статье "двоичный" способ
Mingun
Который к тому же описан неправильно. Ни в одном из примеров, где получается двузначное число в левой столбце, не происходит двукратного умножения:
А если бы это и работало, то по описанию непонятно, подсчет цифр нужно делать до того, как откинем дробную часть или после.
dng-md
Это аФФтар неправильно выразился (почему ? Сам не понял методику ???)
Число в правом столбце умножается на 2 столько раз, СКОЛЬКО ЧИСЕЛ В ЛЕВОМ. Не цифр !!!
То есть, левый столбец формирует строки, а в правом столбце в каждой этой строке происходит удвоение (правого) числа из предыдущей строки.
Glitchades
Во-первых, вычитание (и его сокращённая форма – деление) в уме даётся сложнее суммирования-умножения. А во-вторых, у вас ошибка по невнимательности.
edogs
16*16+16 =256+16=272 .
Не, случай частный, понятно, но тут прям вот.
dng-md
По «русскому» методу 17*16 превращается в … 17*16 ! Как и для любого умножения на число "степени двойки", а для (второго) числа, которое не является степенью двойки требуется (по факту) расположить это числа на степени двойки ...
Так что для устного счета метод подойдёт только гениями устного счета.
Это просто древний Египетский метод, который только интересен тем, кто интересуется математикой.
Но ведь интересен же !!! :-)
Метод позволяет лучше понять "привычное" умножение, вдуматься в суть процесса.
rombell
В уме 4 раза умножить на 2 намного проще, чем сразу на 16.
Например, 62879*16 я не осилю, а *2*2*2*2 думаю, смогу
PassatiziLubvi
Все предложенные примеры легко решаются в уме быстрее чем было бы на бумажке расписывать этим способом. Если же нужно решить действительно сложный пример, и есть время на всю эту писанину, то есть время и на то, чтобы вытащить из кармана телефон и вбить числа в калькулятор. "Русский способ умножения" выглядит как абсолютно бесполезная ерунда.
CorwinH
Этот способ умножения предназначен для тех, кто не знает таблицы умножения.
nin-jin
Но знает таблицу деления.
CorwinH
При делении ответ подбирается. Например, при делении столбиком, как нас учили в школе, предполагается очередная цифра ответа и догадка проверяется умножением. При делении на 2 догадка легко проверяется сложением. Тем более, что в задачах крестьянина 19 века числа обычно небольшие.
Ndochp
Зато он в двоичном виде - сдвиг и сумматор, причем складывать меньше чем сдвигать.
Wesha
Это Вы ещё китайский способ не видели (где надо рисовать линии по значению цифр и считать точки пересечения)
Hrodvitnir
Странно почему он для этого не использует $mol
nin-jin
martin_wanderer
Кажется, для умножения на девять проще идти через десятку
27*9 = 270 - 27 = 243
32*9 = 320 - 32 = 288
NeoNN
Да, так гораздо проще
vtal007
27*9 проще же , умножить на 10 и вычесть 27
boscholeg
Я чаще так решаю:
32*9 = 320-32
27*15 = 270+135
DrGluck07
Программисту не нужно даже вычислять 32 * 9, потому что это константа 288 )
Shephard
нас в школе научили считать умножение обычным столбиком. Позже все это стало удаваться сделать в голове.