Как найти все ноли факториал

Подсчет конечных нулей факториала числа в любой системе счисления

Время на прочтение
2 мин

Количество просмотров 19K

Как я могу посчитать количество конечных нулей факториала числа в определенной системе счисления?

Давайте рассмотрим случай, когда мы находимся в 10-й системе счисления, а затем посмотрим, как мы можем обобщить это в универсальное решение. Нам дано число N и для его факториала нужно найти количество конечных нулей. Решение будет довольно простым — сумма:

Math.floor(N/5) + Math.floor(N/25) + Math.floor(N/125) + Math.floor(N/625) + ...

Её мы можем обобщить в такую формулу:

$sumlimits_{i=1}^infty {N over 5^i}.$

Почему 5? Это просто. Конечный ноль получается только тогда, когда в составе факториала число имеет 10. Таким образом, посчитав количество десяток в факториале, мы узнаем количество конечных нулей.

Почему в примере выше мы делим на 5? Потому что 10 может быть получено умножением 5 на 2. Поэтому полное решение будет иметь две формулы:

$sumlimits_{i=1}^infty {N over 5^i}$

и

$sumlimits_{i=1}^infty {N over 2^i}.$

Но, рассуждая логически, мы знаем, что первая сумма будет меньше, поэтому нам нужно посчитать только её (подробнее можно почитать тут).

Решение нашей проблемы

Для подсчёта конечных нулей факториала числа в определенной системе счисления я составил алгоритм, приведенный ниже:

  1. Разложить число B системы счисления на простые множители.
  2. Разделить число N на каждый уникальной простой множитель K, домножая K сам на себя до тех пор, пока $N over K$ будет больше единицы, при этом округляя каждый результат до меньшего целого.
  3. Если при разложении числа системы счисления мы получили несколько одинаковых простых множителей K, то результат выше мы должны разделить на количество одинаковых K.
  4. Из всех делений N на каждый уникальный множитель K выбрать наименьшее частное, которое и будет нашим ответом.

Я покажу это на примере.
Пусть число N = 5, система счисления B = 12. Факториал 5! = 120, а 120 в 12-ой системе — A0. Мы видим, что в конечной системе счисления факториал исходного числа имеет один ноль. При разложении 12 на простые множители получим 2, 2, 3. У нас есть два уникальных числа: 2 и 3. Следуя нашему алгоритму выполним пункт 2 с числом 2.

${5 over 2 } + {5 over 4 } + {5 over 8 } + ... = 2+1+0+... =3.$

Но двойка встречалась дважды при разложении 12-и, поэтому конечный результат мы делим на 2 и округляем до меньшего целого. В результате получаем 1.

Проделываем тоже самое с 3:

${5 over 3 } + {5 over 9 } + ... = 1+0+... =1.$

Таким образом, мы получили два частных от делений числа N на простые множители числа системы счисления. Они оба равны 1, поэтому меньшее нам выбирать не приходится и мы просто даем ответ — 1.

Рассмотрим еще один пример.

Пусть число N = 16, система счисления B = 16. Факториал 16! = 20922789888000, а 20922789888000 в 16-ой системе — 130777758000. Мы видим, что в конечной системе счисления факториал исходного числа имеет три ноля. При разложении 16 на простые множители, получим 2, 2, 2, 2. Здесь у нас только одно уникальное число, поэтому пункт 2 выполняется только один раз:

${16 over 2 } + {16 over 4 } + {16 over 8 } + {16 over 16 } + {16 over 32 } + ... = 8+4+2+1+0+... =15.$

При разложении у нас было четыре двойки, поэтому сумму делений делим на 4 с округлением до меньшего целого:

$ {15over 4} = 3.$

P.S. Большую часть материала для поста перевел отсюда. Автор — Aditya Ramesh.

  • Факториал
  • Таблица факториалов
  • Примеры решения факториалов
  • Калькулятор факториалов

Факториал

Факториал

ЧТО ТАКОЕ ФАКТОРИАЛ

Для нахождения факториала нужно умножить все целые числа от выбранного нами числа до 1.

Факториал обозначается символом «!»

Пример факториалов:

4! = 4 · 3 · 2 · 1 = 24
5! = 5 · 4 · 3 · 2 · 1 = 120

Обычно говорят 4! как «факториал четырех».

ВЫЧИСЛЕНИЕ ФАКТОРИАЛА

Можно легко рассчитать факториал, зная значение факториала предыдущего числа:

Как найти факториал

Можно это записать в виде таблицы:

n n!
1 1 1 1
2 2 x 1 = 2 x 1! = 2
3 3 x 2 x 1 = 3 x 2! = 6
4 4 x 3 x 2 x 1 = 4 x 3! = 24
5 5 x 4 x 3 x 2 x 1 = 5 x 4! = 120
6 и так далее и так далее

Для точного определения факториала любого числа следует воспользоваться таблицей факториалов

  • Чтобы вычислить 6!, нужно 5!=120 умножить на 6, получается 720
  • Чтобы вычислить 8!, нужно 7!=5040 умножить на 8, получается 40.320

Пример:

9! равно 362.880. Попробуйте посчитать 10!
10! = 9!х10
10! = 362.880 х 10 = 3.628.800

ФОРМУЛА ФАКТОРИАЛА

Существует правило как найти n факториал:

n! = n × (n – 1)!

Которое означает:
“факториал любого числа – это число, умноженное на факториал предыдущего целого числа”
Итак, 12! = 12 × 11!, … и 100! = 100 × 99!, и т. д.

ФАКТОРИАЛ 0

Это очень интересная тема. Принято, что 0! = 1. А почему?

Никакое умножение чисел не приводит к 1, но давайте проследим факториалы в обратном порядке, скажем, от 4!:

Факториал нуля

И во многих задачах 0! = 1 просто имеет смысл.

ФАКТОРИАЛ ОТРИЦАТЕЛЬНОГО ЧИСЛА

Можем ли мы найти факториалы для чисел меньших нуля?

Нет. Факториалы для таких чисел не определены.

Почему? Легко объяснить на примере.

Пример

Начнем с 3! = 3 × 2 × 1 = 6 и спускаемся вниз:
2! = 3! / 3 = 6 / 3 = 2
1! = 2! / 2 = 2 / 2 = 1
0! = 1! / 1 = 1 / 1 = 1
(поэтому 0! = 1)
(−1)! = 0! / 0 = 1 / 0 = ой, деление на ноль не определено

И с этого момента все целочисленные факториалы не определены.

ФАКТОРИАЛ ДРОБНОГО ЧИСЛА

Можем ли мы найти факториалы для таких чисел, как 0,4 или −8,116?

Да мы можем! Но нам нужно углубиться в тему под названием Гамма-функция, которая выходит за рамки этой страницы.

И они могут быть отрицательными (кроме целых чисел).

Вот несколько значений дробных факториалов:

(-1/2)! √π
(1/2)! (1/2)√π
(3/2)! (3/4)√π
(5/2)! (15/8)√π

ПРИМЕНЕНИЕ ФАКТОРИАЛА

Факториалы незаменимы для вычисления количества перестановок, сочетаний и размещений.

Пример:

Сколько существует разных способов, с помощью которых 7 человек могут прийти первым, вторым и третьим ?
Список довольно длинный, если 7 человек обозначим как a, b, c, d, e, f и g, то список включает:
abc, abd, abe, abf, abg, acb, acd, ace, acf, … и т. д.
Формула для расчета: 7!/(7−3)! = 7!/4!
Выпишем умножение полностью:
(7 × 6 × 5 × 4 × 3 × 2 × 1)/(4 × 3 × 2 × 1) = 7 × 6 × 5
Пояснение: 4 × 3 × 2 × 1 сокращено, т.к. они встречаются в числителе и знаменателе, и осталось только 7 × 6 × 5 . получаем:
7 × 6 × 5 = 210
Итак, есть 210 различных способов, которыми 7 человек могут прийти первым, вторым и третьим.

Решено!

Пример:

Что такое 100! / 98!
Используя наши знания из предыдущего примера, мы можем сразу перейти к следующему:
100!/98! = 100 × 99 = 9900

Другие примеры задач с факториалом и их решение на странице решение факториалов.

ИНТЕРЕСНЫЕ ФАКТЫ

70! приблизительно 1,197857 … x 10100 , что чуть больше, чем в Googol (цифра 1, за которой следует сотня нулей).

100 факториал: 100! приблизительно 9,3326215443944152681699238856 x 10157

200 факториал: 200! приблизительно 7,8865786736479050355236321393 x 10374

Полезные материалы по теме

  • Таблица факториалов
  • Примеры решения факториалов
  • Калькулятор факториалов

Хорошая задача. Сразу вспоминается, как учительница в 3 классе (!) задала задачу: «сколько цифр у числа, образованного произведением всех натуральных чисел от 1 до 100. Я решила эту задачу за одну минуту. » Я эту задачу решил только спустя 5 лет, когда открыл для себя логарифмы и таблицу Брадиса =) (тогда еще не было у простых смертных персональных компьютеров) . Но не суть.
Начну со второго вопроса, т. к. он попроще.

20 чисел из первых 100 чисел делятся на 5, но из них четыре числа, а именно 25, 50, 75 и 100 содержат по два множителя 5. Итак, 100! будет оканчиваться на 24 нуля. Тут все понятно.

Теперь как найти Факториал 100!
Задача решения факториала оказалась настолько сложной, что точной формулы его нахождения нет до сих пор, но можно привести формулу Стирлинга для приблизительного вычисления факториала:

Она дает результат: 100! ≈ 9,33×10157

Факториал

Факториал

Для нахождения факториала нужно умножить все целые числа от выбранного нами числа до 1.

Факториал обозначается символом «!»

4! = 4 · 3 · 2 · 1 = 24
5! = 5 · 4 · 3 · 2 · 1 = 120

Обычно говорят 4! как «факториал четырех».

ВЫЧИСЛЕНИЕ ФАКТОРИАЛА

Можно легко рассчитать факториал, зная значение факториала предыдущего числа:

Как найти факториал

Можно это записать в виде таблицы:

n n!
1 1 1 1
2 2 x 1 = 2 x 1! = 2
3 3 x 2 x 1 = 3 x 2! = 6
4 4 x 3 x 2 x 1 = 4 x 3! = 24
5 5 x 4 x 3 x 2 x 1 = 5 x 4! = 120
6 и так далее и так далее

Для точного определения факториала любого числа следует воспользоваться таблицей факториалов

  • Чтобы вычислить 6!, нужно 5!=120 умножить на 6, получается 720
  • Чтобы вычислить 8!, нужно 7!=5040 умножить на 8, получается 40.320

9! равно 362.880. Попробуйте посчитать 10!
10! = 9!х10
10! = 362.880 х 10 = 3.628.800

ФОРМУЛА ФАКТОРИАЛА

Существует правило как найти n факториал:

Которое означает:
«факториал любого числа — это число, умноженное на факториал предыдущего целого числа»
Итак, 12! = 12 × 11!, . и 100! = 100 × 99!, и т. д.

ФАКТОРИАЛ 0

Это очень интересная тема. Принято, что 0! = 1. А почему?

Никакое умножение чисел не приводит к 1, но давайте проследим факториалы в обратном порядке, скажем, от 4!:

Факториал нуля

И во многих задачах 0! = 1 просто имеет смысл.

ФАКТОРИАЛ ОТРИЦАТЕЛЬНОГО ЧИСЛА

Можем ли мы найти факториалы для чисел меньших нуля?

Нет. Факториалы для таких чисел не определены.

Почему? Легко объяснить на примере.

Начнем с 3! = 3 × 2 × 1 = 6 и спускаемся вниз:
2! = 3! / 3 = 6 / 3 = 2
1! = 2! / 2 = 2 / 2 = 1
0! = 1! / 1 = 1 / 1 = 1
(поэтому 0! = 1)
(−1)! = 0! / 0 = 1 / 0 = ой, деление на ноль не определено

И с этого момента все целочисленные факториалы не определены.

ФАКТОРИАЛ ДРОБНОГО ЧИСЛА

Можем ли мы найти факториалы для таких чисел, как 0,4 или −8,116?

Да мы можем! Но нам нужно углубиться в тему под названием Гамма-функция, которая выходит за рамки этой страницы.

И они могут быть отрицательными (кроме целых чисел).

Вот несколько значений дробных факториалов:

(-1/2)! √π
(1/2)! (1/2)√π
(3/2)! (3/4)√π
(5/2)! (15/8)√π

ПРИМЕНЕНИЕ ФАКТОРИАЛА

Факториалы незаменимы для вычисления количества перестановок, сочетаний и размещений.

Сколько существует разных способов, с помощью которых 7 человек могут прийти первым, вторым и третьим ?
Список довольно длинный, если 7 человек обозначим как a, b, c, d, e, f и g, то список включает:
abc, abd, abe, abf, abg, acb, acd, ace, acf, . и т. д.
Формула для расчета: 7!/(7−3)! = 7!/4!
Выпишем умножение полностью:
(7 × 6 × 5 × 4 × 3 × 2 × 1)/(4 × 3 × 2 × 1) = 7 × 6 × 5
Пояснение: 4 × 3 × 2 × 1 сокращено, т.к. они встречаются в числителе и знаменателе, и осталось только 7 × 6 × 5 . получаем:
7 × 6 × 5 = 210
Итак, есть 210 различных способов, которыми 7 человек могут прийти первым, вторым и третьим.

Что такое 100! / 98!
Используя наши знания из предыдущего примера, мы можем сразу перейти к следующему:
100!/98! = 100 × 99 = 9900

Другие примеры задач с факториалом и их решение на странице решение факториалов.

ИНТЕРЕСНЫЕ ФАКТЫ

70! приблизительно 1,197857 . x 10 100 , что чуть больше, чем в Googol (цифра 1, за которой следует сотня нулей).

100 факториал: 100! приблизительно 9,3326215443944152681699238856 x 10 157

200 факториал: 200! приблизительно 7,8865786736479050355236321393 x 10 374

Алгоритмы быстрого вычисления факториала

Понятие факториала известно всем. Это функция, вычисляющая произведение последовательных натуральных чисел от 1 до N включительно: N! = 1 * 2 * 3 *… * N. Факториал — быстрорастущая функция, уже для небольших значений N значение N! имеет много значащих цифр.

Попробуем реализовать эту функцию на языке программирования. Очевидно, нам понадобиться язык, поддерживающий длинную арифметику. Я воспользуюсь C#, но с таким же успехом можно взять Java или Python.

Наивный алгоритм

Итак, простейшая реализация (назовем ее наивной) получается прямо из определения факториала:

На моей машине эта реализация работает примерно 1,6 секунд для N=50 000.

Далее рассмотрим алгоритмы, которые работают намного быстрее наивной реализации.

Алгоритм вычисления деревом

Первый алгоритм основан на том соображении, что длинные числа примерно одинаковой длины умножать эффективнее, чем длинное число умножать на короткое (как в наивной реализации). То есть нам нужно добиться, чтобы при вычислении факториала множители постоянно были примерно одинаковой длины.

Пусть нам нужно найти произведение последовательных чисел от L до R, обозначим его как P(L, R). Разделим интервал от L до R пополам и посчитаем P(L, R) как P(L, M) * P(M + 1, R), где M находится посередине между L и R, M = (L + R) / 2. Заметим, что множители будут примерно одинаковой длины. Аналогично разобьем P(L, M) и P(M + 1, R). Будем производить эту операцию, пока в каждом интервале останется не более двух множителей. Очевидно, что P(L, R) = L, если L и R равны, и P(L, R) = L * R, если L и R отличаются на единицу. Чтобы найти N! нужно посчитать P(2, N).

Посмотрим, как будет работать наш алгоритм для N=10, найдем P(2, 10):

P(2, 10)
P(2, 6) * P(7, 10)
( P(2, 4) * P(5, 6) ) * ( P(7, 8) * P(9, 10) )
( (P(2, 3) * P(4) ) * P(5, 6) ) * ( P(7, 8) * P(9, 10) )
( ( (2 * 3) * (4) ) * (5 * 6) ) * ( (7 * 8) * (9 * 10) )
( ( 6 * 4 ) * 30 ) * ( 56 * 90 )
( 24 * 30 ) * ( 5 040 )
720 * 5 040
3 628 800

Получается своеобразное дерево, где множители находятся в узлах, а результат получается в корне
Дерево вычисления факториала

Реализуем описанный алгоритм:

Для N=50 000 факториал вычисляется за 0,9 секунд, что почти вдвое быстрее, чем в наивной реализации.

Алгоритм вычисления факторизацией

Второй алгоритм быстрого вычисления использует разложение факториала на простые множители (факторизацию). Очевидно, что в разложении N! участвуют только простые множители от 2 до N. Попробуем посчитать, сколько раз простой множитель K содержится в N!, то есть узнаем степень множителя K в разложении. Каждый K-ый член произведения 1 * 2 * 3 *… * N увеличивает показатель на единицу, то есть показатель степени будет равен N / K. Но каждый K 2 -ый член увеличивает степень еще на единицу, то есть показатель становится N / K + N / K 2 . Аналогично для K 3 , K 4 и так далее. В итоге получим, что показатель степени при простом множителе K будет равен N / K + N / K 2 + N / K 3 + N / K 4 +…

Для наглядности посчитаем, сколько раз двойка содержится в 10! Двойку дает каждый второй множитель (2, 4, 6, 8 и 10), всего таких множителей 10 / 2 = 5. Каждый четвертый дает четверку (2 2 ), всего таких множителей 10 / 4 = 2 (4 и 8). Каждый восьмой дает восьмерку (2 3 ), такой множитель всего один 10 / 8 = 1 (8). Шестнадцать (2 4 ) и более уже не дает ни один множитель, значит, подсчет можно завершать. Суммируя, получим, что показатель степени при двойке в разложении 10! на простые множители будет равен 10 / 2 + 10 / 4 + 10 / 8 = 5 + 2 + 1 = 8.

Если действовать таким же образом, можно найти показатели при 3, 5 и 7 в разложении 10!, после чего остается только вычислить значение произведения:

10! = 2 8 * 3 4 * 5 2 * 7 1 = 3 628 800

Осталось найти простые числа от 2 до N, для этого можно использовать решето Эратосфена:

Эта реализация также тратит примерно 0,9 секунд на вычисление 50 000!

Библиотека GMP

Как справедливо отметил pomme скорость вычисления факториала на 98% зависит от скорости умножения. Попробуем протестировать наши алгоритмы, реализовав их на C++ с использованием библиотеки GMP. Результаты тестирования приведены ниже, по ним получается что алгоритм умножения в C# имеет довольно странную асимптотику, поэтому оптимизация дает относительно небольшой выигрыш в C# и огромный в C++ с GMP. Однако этому вопросу вероятно стоит посвятить отдельную статью.

Сравнение производительности

Все алгоритмы тестировались для N равном 1 000, 2 000, 5 000, 10 000, 20 000, 50 000 и 100 000 десятью итерациями. В таблице указано среднее значение времени работы в миллисекундах.
Таблица результатов

График с линейной шкалой
График с линейной шкалой

График с логарифмической шкалой
График с логарифмической шкалой

Идеи и алгоритмы из комментариев

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

Математическая формула представлена восклицательным знаком «!». Термин был введен в 1800 году, а обозначение появилось только в 1808. В формуле нужно умножить все целые числа от 1 до значения самого числа, стоящего под знаком факториала.

Это очень просто, вот пример:

7! = 1 * … * 7 = 5040.

Факторизация – разложение функции на множители.

Таблица факториалов

Таблица факториалов

Свойства факториалов

Рекуррентная формула

251

Комбинаторная интерпретация

Функция n может интерпретироваться как количество перестановок. К примеру, для 3-х элементов есть 3! = 6 перестановки.

Формула Стирлинга

Позволяет не перемножать большие числа. Обычно необходим только главный член:

252

Можно ли вычислить 0,5 или -3,217? Нет, нельзя. Но можно использовать нечто под названием «Гамма-функция», что намного сложнее.

Расчет по предыдущему значению

Функцию легко вычислить из предыдущего значения:

  • 3! = 3 × 2! = 6;

  • 41160 = 5! +8! + 6!

А как вычислить факториал нуля? Если вернуться к определению, то видно, что применять его в случае «0» нет смысла. Положительных чисел до 0 нет, поэтому 0 x 0 = 0.

Однако было решено, что в случае 0 результат будет равен 1.

Свойства факториала

Некоторые очень большие значения

Онлайн калькулятор поможет сделать вычисление – всего лишь надо найти знак, похожий на «x!» или «n!». Нужно обратить внимание, что браузеры могут испытывать затруднения при попытке отобразить более крупные числа и может произойти сбой. 

Некоторые браузеры могут не позволять копировать, поэтому необходимо будет загрузить большие результаты в виде текстового файла.

Примеры вычисления факториалов больших чисел:

  • 70! приблизительно 1 19785716669969869891796072783721 x 10100, что немного больше, чем «гуголь» (1 и 100 нулей);

  • 100! это примерно 9 33262154444944152681699238856 x 101576 x 10157;

  • 200! это примерно 7 88657867867364479050355236321393 x 103743.

Как найти функцию в Паскаль? Вычисление легко реализуется на разных языках программирования. Можно выбрать два метода: итеративный, то есть он создает цикл, в котором временная переменная умножается на каждое натуральное число от 1 до n, или рекурсивный, в котором функция вызывает себя до достижения базового варианта 0! = 1.

Программа на языке Паскаль:

Факториал на Паскале

На языке Си вычисления делаются с помощью рекурсивной функции. Следует заметить, что если начать вычислять факториал отрицательного числа в неаккуратно написанной функции, то это приведет к зацикливанию.

Факториал дроби (½) – это половина квадратного корня pi = (½)√π.

Примеры задач с решениями

Задание 1

254

Задание 2

255

Использование факториалов

Математика и многие ее области используют функцию. В комбинаторике функция была введена именно для расчета перестановки. Также понятие тесно связано с биномом ньютона (формула бинома Ньютона необходима для разложения степени (x + y) n в многочлен).

Факториа́л — функция, определённая на множестве неотрицательных целых чисел. Название происходит от лат. factorialis — действующий, производящий, умножающий; обозначается n!, произносится эн факториа́л. Факториал натурального числа n определяется как произведение всех натуральных чисел от 1 до n включительно:

{displaystyle n!=1cdot 2cdot ldots cdot n=prod _{k=1}^{n}k}.

Например,

5 ! = 1 cdot 2 cdot 3 cdot 4 cdot 5 = 120.

Для n=0 принимается в качестве соглашения, что

0!=1.
Факториалы всех чисел составляют последовательность A000142 в OEIS; значения в научной нотации округляются

n n!
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 39916800
12 479001600
13 6227020800[1]
14 87178291200[2]
15 1307674368000[3]
16 20922789888000[4]
17 355687428096000[5]
18 6402373705728000[6]
19 121645100408832000[7]
20 2432902008176640000[8]
25 15511210043330985984000000[9]
50 30 414 093 201 713 378 043 612 608 166 064 768 844 377 641 568 960 512 000 000 000 000[10]
70 11 978 571 669 969 891 796 072 783 721 689 098 736 458 938 142 546 425 857 555 362 864 628

009 582 789 845 319 680 000 000 000 000 000[11]

100 9,332621544⋅10157
450 1,733368733⋅101000
1000 4,023872601⋅102567
3249 6,412337688⋅1010000
10000 2,846259681⋅1035659
25206 1,205703438⋅10100000
100000 2,824229408⋅10456573
205023 2,503898932⋅101000004
1000000 8,263931688⋅105565708
10100 ≈109,956570552⋅10101

101000 ≈10101003
1010 000 ≈101010 004
10100 000 ≈1010100 005
1010100 ≈101010100

Факториал активно используется в различных разделах математики: комбинаторике, математическом анализе, теории чисел, функциональном анализе и др.

Факториал является чрезвычайно быстро растущей функцией. Он растёт быстрее, чем любая показательная функция или любая степенная функция, а также быстрее, чем любая сумма произведений этих функций. Однако степенно-показательная функция {displaystyle n^{n}} растёт быстрее факториала, так же как и большинство двойных степенных, например e^{{e^{n}}}.

Свойства[править | править код]

Рекуррентная формула[править | править код]

Факториал может быть задан следующей рекуррентной формулой:

n!= begin{cases}
1 & n = 0,\
n cdot (n-1)! & n > 0.
end{cases}

Комбинаторная интерпретация[править | править код]

В комбинаторике факториал натурального числа n интерпретируется как количество перестановок (упорядочиваний) множества из n элементов.

Например, для множества {A,B,C,D} из 4-х элементов существует 4! = 24 перестановки:

ABCD  BACD  CABD  DABC
ABDC  BADC  CADB  DACB
ACBD  BCAD  CBAD  DBAC
ACDB  BCDA  CBDA  DBCA
ADBC  BDAC  CDAB  DCAB
ADCB  BDCA  CDBA  DCBA

Комбинаторная интерпретация факториала подтверждает целесообразность соглашения 0!=1 — количество перестановок пустого множества равно единице. Кроме того, формула для числа размещений из n элементов по m

{displaystyle A_{n}^{m}={frac {n!}{(n-m)!}}}

при n=m обращается в формулу для числа перестановок из n элементов (порядка n), которое равно n!.

Связь с гамма-функцией[править | править код]

Пи-функция, определённая для всех вещественных чисел, кроме отрицательных целых, и совпадающая при натуральных значениях аргумента с факториалом.

Факториал связан с гамма-функцией от целочисленного аргумента соотношением

{displaystyle n!=Gamma (n+1)}.

Это же выражение используют для обобщения понятия факториала на множество вещественных чисел. Используя аналитическое продолжение гамма-функции, область определения факториала также расширяют на всю комплексную плоскость, исключая особые точки при n=-1,-2,-3ldots .

Непосредственным обобщением факториала на множества вещественных и комплексных чисел служит пи-функция {displaystyle Pi (z)=Gamma (z+1)}, которая при {displaystyle mathrm {Re} (z)>-1} может быть определена как

Pi (z)=int _{0}^{infty }t^{{z}}e^{{-t}},{mathrm  {d}}t (интегральное определение).

Пи-функция натурального числа или нуля совпадает с его факториалом: {displaystyle Pi (n)=n!}. Как и факториал, пи-функция удовлетворяет рекуррентному соотношению {displaystyle Pi (z)=zPi (z-1)}.

Формула Стирлинга[править | править код]

Формула Стирлинга — асимптотическая формула для вычисления факториала:

n!={sqrt  {2pi n}}left({frac  {n}{e}}right)^{n}left(1+{frac  {1}{12n}}+{frac  {1}{288n^{2}}}-{frac  {139}{51840n^{3}}}-{frac  {571}{2488320n^{4}}}+{frac  {163879}{209018880n^{5}}}+{frac  {5246819}{75246796800n^{6}}}+Oleft(n^{{-7}}right)right),

см. O-большое[12].

Во многих случаях для приближённого вычисления факториала достаточно рассматривать только главный член формулы Стирлинга:

n! approx sqrt{2pi n}left(frac{n}{e}right)^n.

При этом можно утверждать, что

sqrt{2pi n}left(frac{n}{e}right)^n e^{1/(12n+1)}< n! < sqrt{2pi n}left(frac{n}{e}right)^n e^{1/(12n)}.

Формула Стирлинга позволяет получить приближённые значения факториалов больших чисел без непосредственного перемножения последовательности натуральных чисел. Например, с помощью формулы Стирлинга легко подсчитать, что

  • 100! ≈ 9,33×10157;
  • 1000! ≈ 4,02×102567;
  • 10 000! ≈ 2,85×1035 659.

Разложение на простые множители[править | править код]

Каждое простое число p входит в разложение n! на простые множители в степени определяемой следующей формулой:

leftlfloor frac{n}{p}rightrfloor + leftlfloor frac{n}{p^2}rightrfloor + leftlfloor frac{n}{p^3}rightrfloor + ldots.

Таким образом,

n! = prod_{p} p^{lfloor frac{n}{p}rfloor + lfloor frac{n}{p^2}rfloor +ldots},

где произведение берётся по всем простым числам. Можно заметить, что для всякого простого p большего n соответствующий множитель в произведении равен 1; следовательно, произведение можно брать лишь по простым p, не превосходящим n.

Связь с производной от степенной функции[править | править код]

Для целого неотрицательного числа n:

left(x^{n}right)^{{(n)}}=n!

Например:

left( x^5 right)^{(5)} 
= left( 5 cdot x^4 right)^{(4)} 
= left( 5 cdot 4 cdot x^3 right)'''
= left( 5 cdot 4 cdot 3 cdot x^2 right)'' 
= left( 5 cdot 4 cdot 3 cdot 2 cdot x right)' 
= {5 cdot 4 cdot 3 cdot 2 cdot 1} = 5!

Другие свойства[править | править код]

Для натурального числа n:

n!^{2}geqslant n^{n}geqslant n!geqslant n
Для любого n>1:

n! не является квадратом целого числа;
Для любого n>4:

n! оканчивается на 0;
Для любого {displaystyle n>9}:

n! оканчивается на 00.
Если n простое число:

{displaystyle (n-1)!+1} делится на n (теорема Вильсона)

История[править | править код]

Факториальные выражения появились ещё в ранних исследованиях по комбинаторике, хотя компактное обозначение n! предложил французский математик Кристиан Крамп только в 1808 году[13]. Важным этапом стало открытие формулы Стирлинга, которую Джеймс Стирлинг опубликовал в своём трактате «Дифференциальный метод» (лат. Methodus differentialis, 1730 год). Немного ранее почти такую же формулу опубликовал друг Стирлинга Абрахам де Муавр, но в менее завершённом виде (вместо коэффициента {sqrt  {2pi }} была неопределённая константа)[14].

Стирлинг подробно исследовал свойства факториала, вплоть до выяснения вопроса о том, нельзя ли распространить это понятие на произвольные вещественные числа. Он описал несколько возможных путей к реализации этой идеи и высказал мнение, что:

{displaystyle left({1 over 2}right)!={frac {sqrt {pi }}{2}}}

Стирлинг не знал, что годом ранее решение проблемы уже нашёл Леонард Эйлер. В письме к Кристиану Гольдбаху Эйлер описал требуемое обобщение[15]:

{displaystyle x!=lim _{mto infty }{frac {m^{x}m!}{(x+1)(x+2)dots (x+m)}}}

Развивая эту идею, Эйлер в следующем, 1730 году, ввёл понятие гамма-функции в виде классического интеграла. Эти результаты он опубликовал в журнале Петербургской академии наук в 1729—1730 годах.

Обобщения[править | править код]

Двойной факториал[править | править код]

Двойной факториал числа n обозначается n и определяется как произведение всех натуральных чисел в отрезке [1,n], имеющих ту же чётность, что и n.

  • Для чётного n:
n!! = 2 cdot 4 cdot 6 cdot ldots cdot n = prod_{i=1}^{frac{n}{2}} 2i = 2^{{color{white}1}^{!!!! frac{n}{2}}} cdot left ( frac{n}{2} right )!
  • Для нечётного n:
n!!={1cdot 3cdot 5cdot ldots cdot n}=prod _{{i=0}}^{{{frac  {n-1}{2}}}}(2i+1)={frac  {n!}{2^{{{color {white}1}^{{!!!!{frac  {n-1}{2}}}}}}cdot left({frac  {n-1}{2}}right)!}}

Связь между двойными факториалами двух соседних целых неотрицательных чисел и обычным факториалом одного из них.

n!!={frac  {n!}{(n-1)!!}}

Осуществив замену n=2k для чётного n и n=2k+1 для нечётного n соответственно, где k — целое неотрицательное число, получим:

  • для чётного числа:
(2k)!!=2cdot 4cdot 6cdot ldots cdot 2k=prod _{{i=1}}^{{k}}2i=2^{k}cdot k!
  • для нечётного числа:
(2k+1)!!=1cdot 3cdot 5cdot ldots cdot (2k+1)=prod _{{i=0}}^{{k}}(2i+1)={frac  {(2k+1)!}{2^{k}cdot k!}}

По договорённости: 0!! = 1. Также это равенство выполняется естественным образом:

0!! = 2^0 cdot 0! = 1 cdot 1 = 1

Двойной факториал, так же, как и обычный факториал, определён только для целых неотрицательных чисел.

Последовательность значений n!! начинается так[16]:

1, 1, 2, 3, 8, 15, 48, 105, 384, 945, 3840, 10 395, 46 080, 135 135, 645 120, 2 027 025, 10 321 920, 34 459 425, 185 794 560, 654 729 075, 3 715 891 200, 13 749 310 575, 81 749 606 400, 316 234 143 225, 1 961 990 553 600, 7 905 853 580 625, 51 011 754 393 600, …

Кратный факториал[править | править код]

m-кратный факториал числа n обозначается textstyle nunderbrace{!!ldots !}_m и определяется следующим образом. Пусть число n представимо в виде n=mk-r, где kin {mathbb  {Z}}, r in {0,1,ldots ,m-1}. Тогда[17]

nunderbrace{!!ldots !}_m = prod_{i=1}^k (mi-r)

Обычный и двойной факториалы являются частными случаями m-кратного факториала для m = 1 и m = 2 соответственно.

Кратный факториал связан с гамма-функцией следующим соотношением[18]:

nunderbrace {!!ldots !}_{m}=prod _{{i=1}}^{{k}}(mi-r)=m^{k}cdot {frac  {Gamma left(k-{frac  {r}{m}}+1right)}{Gamma left(1-{frac  {r}{m}}right)}}.

Также кратный факториал textstyle nunderbrace{!!ldots !}_m возможно записывать в сокращенном виде {displaystyle n!_{(m)}}.

Неполный факториал[править | править код]

Убывающий факториал[править | править код]

Убывающим факториалом называется выражение

(n)_k = n^{underline{k}} = n^{[k]}= ncdot (n-1)cdot ldotscdot (n-k+1) = frac{n!}{(n-k)!} = prod_{i=n-k+1}^n i.

Например:

n = 7; k = 4,
(nk) + 1 = 4,
nk = 7 • 6 • 5 • 4 = 840.

Убывающий факториал даёт число размещений из n по k.

Возрастающий факториал[править | править код]

Возрастающим факториалом называется выражение

n^{(k)} = n^{overline{k}} = ncdot (n+1)cdot ldotscdot (n+k-1) = frac{(n+k-1)!}{(n-1)!}=prod_{i=n}^{(n+k)-1} i.

Праймориал или примориал[править | править код]

Праймориал или примориал (англ. primorial) числа n обозначается pn# и определяется как произведение n первых простых чисел. Например,

p_{5}#=2times 3times 5times 7times 11=2310.

Иногда праймориалом называют число n#, определяемое как произведение всех простых чисел, не превышающих заданное n.

Последовательность праймориалов (включая {textstyle{1# equiv 1}}) начинается так[19]:

1, 2, 6, 30, 210, 2310, 30 030, 510 510, 9 699 690, 223 092 870, 6 469 693 230, 200 560 490 130, 7 420 738 134 810, 304 250 263 527 210, 13 082 761 331 670 030, 614 889 782 588 491 400, 32 589 158 477 190 046 000, 1 922 760 350 154 212 800 000, …

Фибонориал или фибоначчиал[править | править код]

Произведение нескольких первых чисел Фибоначчи. Записывается n!F.

Например, : 6!F = {displaystyle 1times 1times 2times 3times 5times 8=240}.

Суперфакториалы[править | править код]

Нейл Слоан и Симон Плуффэ[en] в 1995 году определили суперфакториал как произведение первых n факториалов. Согласно этому определению, суперфакториал четырёх равен

{displaystyle operatorname {sf} (4)=1!times 2!times 3!times 4!=288}

(поскольку устоявшегося обозначения нет, используется функциональное).

В общем


  operatorname{sf}(n)
  =prod_{k=1}^n k! =prod_{k=1}^n k^{n-k+1}
  =1^ncdot2^{n-1}cdot3^{n-2}cdots(n-1)^2cdot n^1.

Последовательность суперфакториалов чисел n geqslant 0 начинается так[20]:

1, 1, 2, 12, 288, 34 560, 24 883 200, 125 411 328 000, 5 056 584 744 960 000, 1 834 933 472 251 084 800 000, 6 658 606 584 104 737 000 000 000 000, 265 790 267 296 391 960 000 000 000 000 000 000, 127 313 963 299 399 430 000 000 000 000 000 000 000 000 000, …

Идея была обобщена в 2000 году Генри Боттомли[en], что привело к гиперфакториалам (англ. Hyperfactorial), которые являются произведением первых n суперфакториалов. Последовательность гиперфакториалов чисел n geqslant 0 начинается так[21]:

1, 1, 2, 24, 6912, 238 878 720, 5 944 066 965 504 000, 745 453 331 864 786 800 000 000 000, 3 769 447 945 987 085 600 000 000 000 000 000 000 000 000, 6 916 686 207 999 801 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000, …

Продолжая рекуррентно, можно определить факториал кратного уровня, или m-уровневый факториал числа n, как произведение (m − 1)-уровневых факториалов чисел от 1 до n, то есть

operatorname {mf}(n,m)=operatorname {mf}(n-1,m)operatorname {mf}(n,m-1)=prod _{{k=1}}^{n}k^{{n-k+m-1 choose n-k}},

где operatorname{mf}(n,0)=n для n>0 и operatorname{mf}(0,m)=1.

Субфакториал[править | править код]

Субфакториал !n определяется как количество беспорядков порядка n, то есть перестановок n-элементного множества без неподвижных точек.

См. также[править | править код]

  • Факторион

Примечания[править | править код]

  1. Шесть миллиардов двести двадцать семь миллионов двадцать тысяч восемьсот
  2. Восемьдесят семь миллиардов сто семьдесят восемь миллионов двести девяносто одна тысяча двести
  3. Один триллион триста семь миллиардов шестьсот семьдесят четыре миллиона триста шестьдесят восемь тысяч
  4. Двадцать триллионов девятьсот двадцать два миллиарда семьсот восемьдесят девять миллионов восемьсот восемьдесят восемь тысяч
  5. Триста пятьдесят пять триллионов шестьсот восемьдесят семь миллиардов четыреста двадцать восемь миллионов девяносто шесть тысяч
  6. Шесть квадриллионов четыреста два триллиона триста семьдесят три миллиарда семьсот пять миллионов семьсот двадцать восемь тысяч
  7. Сто двадцать один квадриллион шестьсот сорок пять триллионов сто миллиардов четыреста восемь миллионов восемьсот тридцать две тысячи
  8. Два квинтиллиона четыреста тридцать два квадриллиона девятьсот два триллиона восемь миллиардов сто семьдесят шесть миллионов шестьсот сорок тысяч
  9. Пятнадцать септиллионов пятьсот одиннадцать секстиллионов двести десять квинтиллионов сорок три квадриллиона триста тридцать триллионов девятьсот восемьдесят пять миллиардов девятьсот восемьдесят четыре миллиона
  10. Тридцать вигинтиллионов четыреста четырнадцать новемдециллионов девяносто три октодециллиона двести один септдециллион семьсот тринадцать седециллионов триста семьдесят восемь квиндециллионов сорок три кваттуордециллиона шестьсот двенадцать тредециллионов шестьсот восемь додециллионов сто шестьдесят шесть ундециллионов шестьдесят четыре дециллиона семьсот шестьдесят восемь нониллионов восемьсот сорок четыре октиллиона триста семьдесят семь септиллионов шестьсот сорок один секстиллион пятьсот шестьдесят восемь квинтиллионов девятьсот шестьдесят квадриллионов пятьсот двенадцать триллионов
  11. Одиннадцать дуотригинтиллионов девятьсот семьдесят восемь антригинтиллионов пятьсот семьдесят один тригинтиллион шестьсот шестьдесят девять новемвигинтиллионов девятьсот шестьдесят девять октовигинтиллионов восемьсот девяносто один септемвигинтиллион семьсот девяносто шесть сексвигинтиллионов семьдесят два квинвигинтиллиона семьсот восемьдесят три кватторвигинтиллиона семьсот двадцать один тревигинтиллион шестьсот восемьдесят девять дуовигинтиллионов девяносто восемь анвигинтиллионов семьсот тридцать шесть вигинтиллионов четыреста пятьдесят восемь новемдециллионов девятьсот тридцать восемь октодециллионов сто сорок два септдециллиона пятьсот сорок шесть седециллионов четыреста двадцать пять квиндециллионов восемьсот пятьдесят семь кваттуордециллионов пятьсот пятьдесят пять тредециллионов триста шестьдесят два додециллиона восемьсот шестьдесят четыре ундециллиона шестьсот двадцать восемь дециллионов девять нониллионов пятьсот восемьдесят два октиллиона семьсот восемьдесят девять септиллионов восемьсот сорок пять секстиллионов триста девятнадцать квинтиллионов шестьсот восемьдесят квадриллионов
  12. Коэффициенты этого разложения дают A001163 (числители) и A001164 (знаменатели)
  13. Крамп, Кристиан. Дата обращения: 19 сентября 2016. Архивировано 19 сентября 2016 года.
  14. Pearson, Karl (1924), Historical note on the origin of the normal curve of errors, Biometrika Т. 16: 402–404 [p. 403], DOI 10.2307/2331714: «Стирлинг лишь показал, что арифметическая константа в формуле Муавра равна {sqrt  {2pi }}. Я считаю, что это не делает его автором теоремы»
  15. Дональд Кнут. Искусство программирования, том I. Основные алгоритмы. — М.: Мир, 1976. — С. 79—81. — 736 с.
  16. Последовательность A006882 в OEIS
  17. «Энциклопедия для детей» Аванта+. Математика.
  18. wolframalpha.com Архивная копия от 1 ноября 2013 на Wayback Machine.
  19. Последовательность A002110 в OEIS
  20. Последовательность A000178 в OEIS
  21. Последовательность A055462 в OEIS

Добавить комментарий