Помните, как в школе умножали "столбиком"? Скажем, числа 52 и 37 умножают так: Умножение двузначных чисел мы свели 1) к умножению однозначных (оно короткое), 2) к сложению, 3) и еще к сдвигу, эта операция настолько проста, что мы её и не замечаем. Она соответствует умножению на степень десятки, и «почти бесплатна»: (50+2)×(30+7) = 5×3×100 + 2×3×10 + 5×7×10 + 2×7. Умножение двух двузначных чисел требует четырех коротких умножений. Умножение двух трехзначных чисел требует девяти коротких умножений. И так далее. Умножение двух N-значных чисел сводится к N² коротким умножениям (и ещё к сложениям и сдвигам). Для компьютерных вычислений умножение – самая затратная по времени операция, а сложение и тем более сдвиг – нет; поэтому сложность алгоритма умножения длинных чисел оценивают числом коротких, «однозначных» умножений. (Внутри компьютера числа представляются не так, как в школьных тетрадках, основание счисления будет не 10, а какая-то степень двойки, но для оценки это непринципиально.
Быстро, еще быстрее, быстро как только можно: как компьютеры умножают
5 октября 20195 окт 2019
3209
2 мин