Когда крестьяне считали интереснее, чем ты
Из книги «99 секретов математики»
Из книги «99 секретов математики»
Вместо 7 действий (6 умножений однозначных чисел и 1 сложение двух трёхзначных) получаем
6 умножений, 6 делений, сравнения, выделение остатка и суммирование трёх-, четырёхзначных чисел. Для человека, который не умеет научиться умножать в столбик, увеличение количества операций уверенно увеличивает вероятность ошибки.
Насчет ошибки - однозначно. Пока друг проверял, так и сказал - ну его нафиг, я быстрее таблицу умножения бы выучил 😁Но хоть какой-то шанс есть 🙈
И в книге это привели скорее, как «вот раньше трава была зеленее и люди могли огого!» угу, «богатыри, не вы»
Скорее всего, нет. "Метод русского крестьянина" - известный в Америке метод, очень давно проходится в некоторых школах. Не знаю, правда ли он когда-то использовался крестьянами в России, но легенда именно такая. Сейчас встречается в книгах по алгоритмике.
Вот две разные публикации 1913 года.
Тем более, что умножать на 11 в уме просто. В данном случае надо раздвинуть 4 и 2 в числе 432 и записать в центр их сумму с 3.
Получается 4(4+3)(3+2)2=4752.
Также можно 108 умножить сначала на 40, затем на 4, после все сложить.
Немного не так. Мы делаем не "деление" а "деление на два". И не "умножение", а "умноэжение на два", что более простая операция.
Для умножения в столбик надо знать таблицу умножения, в которой, емнип, 55 элементов с учётом зеркалирования, а для этого метода надо умножение на два, в которой десять.
По факту, это реализация умножения столбиком в двоичной системе через арифметиский сдвиг, тест чётности и сложение. Где-то так.
unsigned int result(unsigned int arg1, unsigned arg2){
....unsigned int result = 0;
....while(arg1 > 0){
........if (arg1 & 1)
............result += arg2;
........arg1 = arg1 >> 1;
........arg2 = arg2 << 1;
....}
....return result;
}
unsigned int result(unsigned int arg1, unsigned arg2){
unsigned int result = 0;
while(arg1 > 0){
if (arg1 & 1)
result += arg2;
arg1 = arg1 >> 1;
arg2 = arg2 << 1;
}
return result;
}
Количество операций в таком алгоритме зависит от логарифма числа, на которое умножаем по основанию 2. Эта зависимость растёт очень медленно. Например 2^32 это больше миллиарда. То есть если умножаем на миллиард - нам потребуется около 32 операций.
Да и ошибиться при умножении на 2 довольно сложно по сравнению с умножением на другие числа.