Всем привет, меня зовут Андрей, это снова я!
В данной статье я хочу рассказать про большие числа. Известно, что Excel часто округляет большие числа. Приведем несколько примеров. Допустим, что мы хотим узнать факториалы разных чисел от 1 до 25. Напомню, что факториал числа n это есть произведение всех натуральных чисел от 1 до n включительно. Вот что у нас получится:
Как видим, факториалы чисел от 1 до 11 показаны как есть. А уже начиная с 12-ти мы видим упрощение и округление чисел. Так, для числа «факториал 12-ти» мы видим следующее: 4,79Е+08. Как это понимать? Да очень просто: 4,79 надо умножить на 10 в восьмой степени. Не просто в восьмой, а в плюс восьмой. Так-то оно так, да не совсем, потому что из-за такого округления мы теряем возможность увидеть все цифры этого числа. Так вот, эта моя статья посвящена именно любителям больших чисел. Тем, кто хочет при умножении видеть не округленное большое число, а каждую цифру этого числа. А начнем именно с факториала двенадцати.
Итак, факториал двенадцати, или 12!, это есть произведение 12-ти чисел:
1*2*3*4*5*6*7*8*9*10*11*12
Давайте сначала умножим первые шесть цифр, то есть найдем факториал шести. С этой задачей вполне справится Excel, при этом большое число округляться не будет. И в первом рисунке мы это число уже видели. Итак, факториал шести – это 720.
Теперь найдем второе число, или второй множитель. Для этого умножим тоже 6 чисел, и с этой задачей тоже Excel справится без округления. Итак, считаем, сколько будет 7*8*9*10*11*12. Это просто, и это будет 665280.
Кстати, открою один секрет. Даже в том случае, если Excel отображает число в таком упрощенном, или округленном виде, мы можем с этим числом выполнять любые операции, например, деление или умножение. И если результат деления одного большого числа на другое будет не очень большим, то мы увидим каждую цифру этого результата, полученного при делении. То есть (вернемся к нашему первому рисунку), если мы в какой-то свободной клетке напишем следующую формулу:
=B12/B6
то получим результат – 665280. Потому что при этом делении мы в числителе «видим» одно число, округленное, а сам Excel точно знает каждую цифру этого числа. И Excel берет для числителя не 479000000, а более точное число. Excel это число знает, да не хочет нам показывать...
Итак, у нас уже есть два числа, и их надо перемножить. Первое число: 720, а второе – 665280.
Сами числа, которые надо перемножить, нам уже известны. Что будем делать дальше? Вначале выясним, сколько цифр в каждом из чисел. В нашем случае – это 3 (3 цифры в числе 720) и 6 (шесть цифр в числе 665280).
Затем построим квадратик 6 на 6, потому что именно 6 – это максимальное число среди этих двух (3 и 6). Вот этот квадратик:
Бледно-синим выделен тот самый квадратик 6 на 6; рядом с ним – шесть клеток розового и шесть клеток желтого цветов. Вот с них-то мы и начнем заполнение.
Поскольку 720 – это меньшее число, и цифр в нем на 3 меньше, чем во втором числе, то нам надо добавить три ноля в начале этого числа. Итак, одно число это 000720, второе – 665280. Поместим эти числа рядом с нашим квадратиком следующим образом:
Следующий этап – заполнение синего квадратика. Здесь все просто. Нужно каждую цифру одного числа умножить на каждую цифру другого. Достаточно одной формулы. Если, например в N9 ввести формулу:
=$O9*N$10
и с помощью тандема копировать-вставить вставить эту формулу на весь синий квадратик, то вот что получится:
Затем нам понадобится еще один такой же квадрат, но цифры в нем будут соответствовать номерам диагоналей первого (левого) синего квадрата:
Розовая и желтая полосы рядом с правым квадратом не обязательны, хотя и не сильно помешают. Главное – сам правый квадрат. Он достаточно прост. Его правый нижний угол – это единица, или диагональ номер один. И далее нумерация возрастает, если идти справа налево. При желании можно применить к этому правому квадрату цветовую шкалу условного форматирования. Вот что получится:
Что делать дальше с этими двумя квадратами?
В принципе, данные в этих квадратах – исключительно для нахождения произведения двух чисел – 720 и 665280. И находить это произведение мы будем «с конца», то есть с последней цифры. Конечно же, это будет ноль, поскольку каждое из наших двух чисел кратно десяти. Но я говорю о единой методике, которая будет применима и к другим числам тоже. Как же найти последнюю цифру от произведения? Вот здесь-то и понадобятся два синих квадрата.
Сначала находим единицу в правом синем квадрате. Это значит, что мы вычисляем цифру № 1 в нашем произведении, причем нумерация эта (здесь и далее в данной статье, если иное не будет оговариваться отдельно) идет, как сказали бы железнодорожники, «с хвоста поезда». То есть: не слева направо, а справа налево. Цифру 1 имеет в правом квадрате только одна клетка, самая правая нижняя. А это значит, что для нахождения цифры № 1 в нашем произведении нам понадобится та же цифра (правая и нижняя), но в левом синем квадрате. И для нахождения этой цифры можно воспользоваться очень простой формулой. Но перед вводом этой формулы мы добавим в наш лист всего два имени: ква1 – для левого синего квадратика и ква2 – для правого синего. И тогда наша формула будет иметь следующий вид:
=СУММПРОИЗВ((ква1)*(ква2=1))
Поскольку массивы ква1 и ква2 имеют одинаковый размер, то эта формула в переводе на русский язык звучит так: "просуммировать такие ячейки в квадрате 1, что стоят на местах, занимаемых в квадрате 2 единицей". Результат будет – ноль. Если бы результат был двузначным, то мы бы воспользовались принципом «одно пишем, другое в уме». Но об этом чуть позже, мы еще с похожей ситуацией в нашем примере столкнемся.
Кстати, я уже раньше писал на своем канале про функцию СУММПРОИЗВ, я говорил о том, что это намного больше, чем просто сумма произведений. И вот тут как раз мы столкнулись с одним из многочисленных примеров применения данной функции.
Итак, переходим к числу № 2 нашего произведения. Заменив в этой формуле после второго (правого) знака равно 1 на 2, мы получим тоже 0. Это неудивительно, ведь в каждом из наших множителей есть ноль справа.
А вот с цифрой № 3 начинается самое интересное. Меняем в той же формуле 2 на 3:
=СУММПРОИЗВ((ква1)*(ква2=3))
Результат: 16. Действительно, если брать ту самую диагональ правого квадрата, которая содержит тройки в правом квадрате, то мы получим:
0+16+0=16.
Это значит, что в нашем произведении третья цифра будет 6, а единица – это та цифра, которая «в уме».
Аналогичным образом получаем и все остальные цифры нашего произведения, главное - не забывать про "нумерацию с хвоста поезда", то есть правые цифры вычисляются раньше левых. В принципе, уже сейчас можно начать составлять формулы, которые позволяют из этих двух квадратов получить все цифры для произведения двух чисел:ормулы для правых цифр результата.
Но вначале покажем результат:
Итак, факториал двенадцати будет равен 479 001 600.
Кстати, мы можем проверить правильность наших расчетов. Если мы в любую из ячеек введем формулу:
=ФАКТР(12)/100
то мы увидим результат:
4 790 016.
А теперь покажем основные формулы:
В принципе, формулы для каждой из ячеек 18-й строки Excel очень похожи. Исключение – «крайняя левая» цифра:
В принципе, остальное умножение вычисляется аналогично. Даже в том случае, если в одном из чисел, которые мы хотим перемножить, будет больше, чем 6 чисел, мы можем применить данную методику.
Пусть, например, надо перемножить два числа – 123456789 и 987654321. Конечно же, Excel нам даст результат: 1,21933E+17, то есть чуть больше, чем 1,2, умноженное на 10 в семнадцатой степени. Ах, да, конечно: в плюс семнадцатой. А если мы хотим увидеть все цифры, что нам надо сделать? Первый вариант прост – продолжить те синие квадратики, о которых мы говорили ранее, таким образом, чтобы сторона каждого из них составляла не 6, а 9 клеток. Но есть и второй вариант – оставить эти квадраты как есть. Но разделить те числа, которые мы хотим перемножить, на несколько фрагментов.
Итак, число 1, фрагмент 1. Это важно: начинаем, как и раньше, «с хвоста поезда». Это будет 456789. Число 2, фрагмент 1 – это будет 654321.
Помещаем эти фрагменты в наши квадратики:
Итак, мы видим результат. Но нас интересуют только последние 6 цифр, в нашем случае это будет шестизначное число 635269, потому как при умножении длинных чисел действует простое правило: если мы хотим получить только последние n цифр от длинного числа, которое является произведением двух других чисел, в каждом из которых содержится больше, чем n цифр, то мы должны последние n цифр одного числа умножить на последние n цифр другого числа. А вот что делать с оставшимися цифрами? Они будут «в уме», и это будет тоже шестизначное число 298886.
Запишем оба эти числа отдельно, нам они еще пригодятся. Можно их записать в том же файле, на отдельном листе:
Что делать дальше? Да просто умножить второй фрагмент первого числа на первый же фрагмент второго числа. Вот что получится:
Как мы видим, необязательно дополнять меньшее число (число, в котором цифр меньше шести) нулями слева. Просто главное - не ошибиться, поставив цифры меньшего числа в нужные места.
Точно так же, отделим 6 «правых» цифр и продолжим заполнять таблицу с результатами:
Следующий этап – умножаем первый фрагмент первого числа на второй фрагмент второго числа:
Снова записываем результаты в сводную таблицу:
И, наконец, останется перемножение вторых фрагментов:
Снова таблица:
Итак, все нужные нам числа получены. Что с ними делать дальше? Как и прежде, начинаем «с хвоста поезда», то есть с шести цифр, крайних справа. И здесь надо разделить наши числа на две части: отдельно те, что мы условно назвали «6 справа», и отдельно – те, что мы условно назвали «всё остальное».
Те, что попали в категорию «6 справа», поместим в один квадратик:
Принцип, по которому мы распределили эти цифры по углам квадратика, достаточно прост. Как и в прежних синих квадратиках, правый нижний угол означает "хвост поезда" то есть первая шестерка цифр слева. Фраза "число 1 фрагмент 1" содержит 2 числа, и их сумма - 2. Для остальных чисел в каждой из диагонали справедлив принцип: номер числа и номер фрагмента для каждой из диагоналей один и тот же. И, как и в предыдущих случаях, мы берем только те диагонали, что идут из левого нижнего угла синей клетки ("юго-запад") в правый верхний ("северо-восток"). Диагонали "юго-восток" и "северо-запад" мы не рассматриваем.
В правом нижнем углу этого квадратика – число 635 269. Это и есть 6 окончательных («крайних справа» цифр нашего результата).
С остальными цифрами – чуть сложнее. Вначале получим второй аналогичный квадратик, из тех чисел, что мы условно назвали «всё остальное»:
Итак, два квадрата составлены. Первый мы условно назвали «пишем» второй – так же условно – «в уме». А это значит, что уже можно приступить к вычислению конечного результата. Нам понадобятся только два эти квадратика. Покажем их вместе:
Итак, два квадратика уже есть. И последние 6 цифр в произведении двух больших чисел мы уже нашли.
Напомню, что эти цифры будут 635 269, то есть правый нижний угол левого квадратика.
Теперь следующая шестерка цифр. Вначале переходим на следующую диагональ левого квадратика, находим сумму чисел этой диагонали:
850 743 + 481 483 = 1 332 226.
Но это не всё. Нужно добавить то число, что находится в правом нижнем углу правого квадратика. Вот что получится:
1 332 226 + 298 886 = 1 631 112.
Получилось 7 цифр. Это значит, что 6 последних мы «пишем», а седьмая, то есть единица, будет «в уме». Итак, уже известны 12 последних цифр в нашем числе. Вот они (слева направо):
631 112 635 269.
Теперь переходим к следующей шестерке. Расчет аналогичный предыдущему. Берем следующую диагональ как в первом, так и во втором квадратике.
В первом квадратике нужно взять число 121 401, во втором – 450 и 80. Но к этому надо добавить единицу, потому что она была «в уме» при работе с предыдущей шестеркой чисел. Результат – 121 932. Это и есть те 6 цифр, которые и будут в нашем итоговом числе «крайними слева».
Итак, наш конечный результат: 121 932 631 112 635 269.
Напомню, что Excel дал нам результат 1,21933E+17, то есть последняя цифра в данной записи была округлена согласно принципам округления.
Было бы больше цифр в наших числах, которые надо перемножить, все равно умножение можно было бы производить аналогичным способом. Так что если кто хочет увидеть факториал большого числа или результат возведения какого-нибудь числа в достаточно большую степень, пишите в комментариях, будем вычислять!