Факториал 1000: Точное вычисление 1000!
Калькулятор факториалов
Факториалы
Что такое факториалы и как их решать
Факториал числа n, который в математике обозначают буквой латиницы n, после которой следует
восклицательный знак !. Произносится голосом это выражение как “н факториал”. Факториал – это результат
последовательного умножения между собой последовательности натуральных чисел с 1 и до искомого числа n.
Например, 5! = 1 х 2 х 3 х 4 х 5=720Факториал числа n обозначается латинской буквой n! и произносится
как эн факториал. Представляет собой последовательное перемножение (произведение) всех натуральных чисел
начиная с 1 до числа n.
Например: 6! = 1 х 2 х 3 х 4 х 5=720
Факториал имеет математический смысл, только тогда, когда если это число целое и положительное
(натуральное). Этот смысл следует из самого определения факториала, т.к. все натуральные числа
неотрицательные и целые. Значения факториалов, а именно результат умножения последовательности от
единицы до числа n можно посмотреть в таблице факториалов. Такая таблица возможна, по причине того, что
значение факториала любого целого числа известно заранее и является, так сказать, табличным
значением.
По определению 0! = 1. То есть если имеется ноль факториал, то мы ничего не перемножаем и результат будет
первым натуральным существующим числом, то есть один.
Рост функции факториала можно отобразить на графике. Это будет дуга, похожая на функцию икса в квадрате,
которая будет стремиться быстро вверх.
Факториал – является быстрорастущей функцией. Она растет по графику быстрее, чем функция многочлена любой
степени и даже экспоненциальная функция. Факториал растет быстрее многочлена любой степени и
экспоненциальной функции (но при этом медленнее двойной экспоненциальной функции). Именно поэтому, чтобы
посчитать факториал вручную могут быть сложности, так как результатом может получиться очень большое
число. Чтобы не считать факториал вручную, можно воспользоваться калькулятором подсчёта факториалов, с
помощью которого вы можете быстро получить ответ. Факториал применяется в функциональном анализе, теории
чисел и комбинаторике, в которой имеет большой математический смысл, связанный с числом всевозможных
неупорядоченных комбинаций объектов (чисел).
Чтобы быстро рассчитать число комбинаций n чисел, нужно всего лишь посчитать n!. После подсчёта значения
факториала калькулятором, искомое значение можно использовать в решении более сложных задач.
Вы можете посмотреть необходимый факториал в таблице: «Таблица
факториалов»
Бесплатный онлайн калькулятор факториалов
Наш бесплатный решатель позволяет расчитать факториалы онлайн любой сложности за считанные секунды. Все,
что вам необходимо
сделать — это просто ввести свои данные в калькуляторе. Так же вы можете посмотреть
видео
инструкцию и узнать, как решить уравнение на нашем сайте. А если у вас остались вопросы, то
вы
можете задать их в нашей группе Вконтакте: pocketteacher.
Вступайте
в нашу группу, мы всегда рады помочь вам.
Калькулятор онлайн для расчета факториала числа
Факториал натурального числа n — произведение первых по счету,n натуральных чисел от 1 до n включительно, обозначается n!
n! = 1 • 2 • 3 • 4 • 5 • … • n
Факториа́л числа – это число, умноженное на «себя минус один», затем на «себя минус два» и так далее, до единицы.
n! = n • (n — 1) • (n — 2) • … • 1
Для приближённого вычисления факториала и гамма-функции используется формула Стирлинга . Названа в честь Джеймса Стирлинга и Абрахама де Муавра, последний считается автором формулы
Вычисление факториала числа (n!) по формуле в Стирлинга. Этот калькулятор может быть использован для вычисления значений n больше 100.
Расчет факториала по формуле Джеймса Стирлинга
Приближенное значение не ограничено по колличеству n
Расчет факториала от 0 до 100
Точное значение, ограниченное по колличеству n
Формула Джеймса Стирлинга для расчета факториала
n! ≈ √(2π) × n(n+1/2) × e -n
Примеры значений для разных n:
1! = 1
2! = 2 × 1 = 2
3! = 3 × 2 × 1 = 6
4! = 4 × 3 × 2 × 1 = 24
5! = 5 × 4 × 3 × 2 × 1 = 120
Не стоит забывать
По общепринятой договоренности 0! = 1 (факториал нуля равен единице). Этот факт важен, к примеру, для вычисления биномиальных коэффициентов.
Полезный факт
Факториал числа, функцию от натурального аргумента можно продолжить на все действительные числа с помощью т.н. Гамма-функции (важно отметить, что для этого требуется определенный математический аппарат). В таком случае, мы сможем посчитать факториал любого действительного числа. Например, факториал (или, Гамма-функция, что математически правильнее) числа Пи. π! приблизительно равен 2.28803779534. Факториал числа Эйлера, другого трансцендентного числа, Γ(e) ~ 1.567468255 (упрощенно, факториал числа e).
В вашем браузере отключен Javascript.
Чтобы произвести расчеты, необходимо разрешить элементы ActiveX!
Факториал — Википедия
Факториа́л — функция, определённая на множестве неотрицательных целых чисел. Название происходит от лат. factorialis — действующий, производящий, умножающий; обозначается n!, произносится эн факториа́л. Факториал натурального числа n определяется как произведение всех натуральных чисел от 1 до n включительно:
- n!=1⋅2⋅…⋅n=∏k=1nk{\displaystyle n!=1\cdot 2\cdot \ldots \cdot n=\prod _{k=1}^{n}k}.
Например,
- 5!=1⋅2⋅3⋅4⋅5=120{\displaystyle 5!=1\cdot 2\cdot 3\cdot 4\cdot 5=120}.
Из определения факториала следует соотношение (n−1)!=n!n{\displaystyle (n-1)!={\frac {n!}{n}}}, откуда при n=1{\displaystyle n=1} формально находим
- 0!=1{\displaystyle 0!=1}.
Последнее равенство обычно принимают в качестве соглашения, хотя, как показано выше, оно следует из определения факториала для натуральных чисел при условии, что все значения функции связаны единым рекуррентным соотношением.
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 |
14 | 87178291200 |
15 | 1307674368000 |
16 | 20922789888000 |
17 | 355687428096000 |
18 | 6402373705728000 |
19 | 121645100408832000 |
20 | 2432902008176640000 |
25 | ≈1,551121004 × 1025 |
50 | ≈3,041409320 × 1064 |
70 | ≈1,197857167 × 10100 |
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 |
Факториал активно используется в различных разделах математики: комбинаторике, математическом анализе, теории чисел, функциональном анализе и др.
Факториал является чрезвычайно быстро растущей функцией. Он растёт быстрее, чем любая показательная функция или любая степенная функция, а также быстрее, чем любая сумма произведений этих функций. Однако, степенно-показательная функция nn{\displaystyle n^{n}} растёт быстрее факториала, так же как и большинство двойных степенных, например een{\displaystyle e^{e^{n}}}.
Свойства
Рекуррентная формула
- n!={1n=0,n⋅(n−1)!n>0.{\displaystyle 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{\displaystyle 0!=1}. Так, формула для числа размещений из n{\displaystyle n} элементов по m{\displaystyle m}
- Anm=n!(n−m)!{\displaystyle A_{n}^{m}={\frac {n!}{(n-m)!}}}
при n=m{\displaystyle n=m} обращается в формулу для числа перестановок из n{\displaystyle n} элементов (порядка n{\displaystyle n}), которое равно n!{\displaystyle n!}.
Связь с гамма-функцией
Пи-функция, определённая для всех вещественных чисел, кроме отрицательных целых, и совпадающая при натуральных значениях аргумента с факториалом.
Факториал связан с гамма-функцией от целочисленного аргумента соотношением
- n!=Γ(n+1){\displaystyle n!=\Gamma (n+1)}.
Это же выражение используют для обобщения понятия факториала на множество вещественных чисел. Используя аналитическое продолжение гамма-функции, область определения факториала также расширяют на всю комплексную плоскость, исключая особые точки при n=−1,−2,−3…{\displaystyle n=-1,-2,-3\ldots }.
Непосредственным обобщением факториала на множества вещественных и комплексных чисел служит пи-функция Π(z)=Γ(z+1){\displaystyle \Pi (z)=\Gamma (z+1)}, которая при Re(z)>−1{\displaystyle \mathrm {Re} (z)>-1} может быть определена как
- Π(z)=∫0∞tze−tdt{\displaystyle \Pi (z)=\int _{0}^{\infty }t^{z}e^{-t}\,\mathrm {d} t} (интегральное определение).
Пи-функция натурального числа или нуля совпадает с его факториалом: Π(n)=n!{\displaystyle \Pi (n)=n!}. Как и факториал, пи-функция удовлетворяет рекуррентному соотношению Π(z)=zΠ(z−1){\displaystyle \Pi (z)=z\Pi (z-1)}.
Формула Стирлинга
Формула Стирлинга — асимптотическая формула для вычисления факториала:
- n!=2πn(ne)n(1+112n+1288n2−13951840n3−5712488320n4+163879209018880n5+524681975246796800n6+O(n−7)),{\displaystyle n!={\sqrt {2\pi 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}}}+O\left(n^{-7}\right)\right),}
см. O-большое[1].
Во многих случаях для приближённого значения факториала достаточно рассматривать только главный член формулы Стирлинга:
- n!≈2πn(ne)n.{\displaystyle n!\approx {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}.}
При этом можно утверждать, что
- 2πn(ne)ne1/(12n+1)<n!<2πn(ne)ne1/(12n).{\displaystyle {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}e^{1/(12n+1)}<n!<{\sqrt {2\pi 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! на простые множители в степени
- ⌊np⌋+⌊np2⌋+⌊np3⌋+….{\displaystyle \left\lfloor {\frac {n}{p}}\right\rfloor +\left\lfloor {\frac {n}{p^{2}}}\right\rfloor +\left\lfloor {\frac {n}{p^{3}}}\right\rfloor +\ldots .}
Таким образом,
- n!=∏pp⌊np⌋+⌊np2⌋+…,{\displaystyle n!=\prod _{p}p^{\lfloor {\frac {n}{p}}\rfloor +\lfloor {\frac {n}{p^{2}}}\rfloor +\ldots },}
где произведение берётся по всем простым числам. Можно заметить, что для всякого простого p большего n соответствующий множитель в произведении равен 1, следовательно произведение можно брать лишь по простым p, не превосходящим n.
Связь с производной от степенной функции
Для целого неотрицательного числа n:
- (xn)(n)=n!{\displaystyle \left(x^{n}\right)^{(n)}=n!}
Например:
- (x5)(5)=(5⋅x4)(4)=(5⋅4⋅x3)‴=(5⋅4⋅3⋅x2)″=(5⋅4⋅3⋅2⋅x)′=5⋅4⋅3⋅2⋅1=5!{\displaystyle \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⩾nn⩾n!⩾n{\displaystyle n!^{2}\geqslant n^{n}\geqslant n!\geqslant n}
- Для любого n>1:
- n!{\displaystyle n!} не является квадратом целого числа.
История
Факториальные выражения появились ещё в ранних исследованиях по комбинаторике, хотя компактное обозначение n!{\displaystyle n!} предложил французский математик Кристиан Крамп только в 1808 году[2]. Важным этапом стало открытие формулы Стирлинга, которую Джеймс Стирлинг опубликовал в своём трактате «Дифференциальный метод» (лат. Methodus differentialis, 1730 год). Немного ранее почти такую же формулу опубликовал друг Стирлинга Абрахам де Муавр, но в менее завершённом виде (вместо коэффициента 2π{\displaystyle {\sqrt {2\pi }}} была неопределённая константа)[3].
Стирлинг подробно исследовал свойства факториала, вплоть до выяснения вопроса о том, нельзя ли распространить это понятие на произвольные вещественные числа. Он описал несколько возможных путей к реализации этой идеи и высказал мнение, что:
- (12)!=π2{\displaystyle \left({1 \over 2}\right)!={\frac {\sqrt {\pi }}{2}}}
Стирлинг не знал, что годом ранее решение проблемы уже нашёл Леонард Эйлер. В письме к Кристиану Гольдбаху Эйлер описал требуемое обобщение[4]:
- x!=limm→∞mxm!(x+1)(x+2)…(x+m){\displaystyle x!=\lim _{m\to \infty }{\frac {m^{x}m!}{(x+1)(x+2)\dots (x+m)}}}
Развивая эту идею, Эйлер в следующем, 1730 году ввёл понятие гамма-функции в виде классического интеграла. Эти результаты он опубликовал в журнале Санкт-Петербургской Академии наук в 1729—1730 годах.
Обобщения
Двойной факториал
Двойной факториал числа n обозначается n‼ и определяется как произведение всех натуральных чисел в отрезке [1,n], имеющих ту же чётность, что и n.
- n!!=2⋅4⋅6⋅…⋅n=∏i=1n22i=21n2⋅(n2)!{\displaystyle 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!!=1⋅3⋅5⋅…⋅n=∏i=0n−12(2i+1)=n!21n−12⋅(n−12)!{\displaystyle n!!={1\cdot 3\cdot 5\cdot \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!!=(n+1)!(n+1)!!{\displaystyle n!!={\frac {(n+1)!}{(n+1)!!}}}
- Для нечётного n:
- n!!=n!(n−1)!!{\displaystyle n!!={\frac {n!}{(n-1)!!}}}
Выведение формул
Осуществив замену n=2k{\displaystyle n=2k} для чётного n и n=2k+1{\displaystyle n=2k+1} для нечётного n соответственно, где k{\displaystyle k} — целое неотрицательное число, получим:
- для чётного числа:
- (2k)!!=2⋅4⋅6⋅…⋅2k=∏i=1k2i=2k⋅k!{\displaystyle (2k)!!=2\cdot 4\cdot 6\cdot \ldots \cdot 2k=\prod _{i=1}^{k}2i=2^{k}\cdot k!}
- для нечётного числа:
- (2k+1)!!=1⋅3⋅5⋅…⋅(2k+1)=∏i=0k(2i+1)=(2k+1)!2k⋅k!{\displaystyle (2k+1)!!=1\cdot 3\cdot 5\cdot \ldots \cdot (2k+1)=\prod _{i=0}^{k}(2i+1)={\frac {(2k+1)!}{2^{k}\cdot k!}}}
По договорённости: 0!!=1{\displaystyle 0!!=1}. Также это равенство выполняется естественным образом:
- 0!!=20⋅0!=1⋅1=1{\displaystyle 0!!=2^{0}\cdot 0!=1\cdot 1=1}
Двойной факториал, также как и обычный факториал, определён только для целых неотрицательных чисел.
Последовательность значений n!! начинается так[5]:
- 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 обозначается n!!…!⏟m{\displaystyle \textstyle n\underbrace {!!\ldots !} _{m}} и определяется следующим образом. Пусть число n представимо в виде n=mk−r,{\displaystyle n=mk-r,} где k∈Z,{\displaystyle k\in \mathbb {Z} ,} r∈{0,1,…,m−1}.{\displaystyle r\in \{0,1,\ldots ,m-1\}.} Тогда[6]
- n!!…!⏟m=∏i=1k(mi−r){\displaystyle n\underbrace {!!\ldots !} _{m}=\prod _{i=1}^{k}(mi-r)}
Обычный и двойной факториалы являются частными случаями m-кратного факториала для m = 1 и m = 2 соответственно.
Кратный факториал связан с гамма-функцией следующим соотношением[7]:
- n!!…!⏟m=∏i=1k(mi−r)=mk⋅Γ(k−rm+1)Γ(1−rm).{\displaystyle n\underbrace {!!\ldots !} _{m}=\prod _{i=1}^{k}(mi-r)=m^{k}\cdot {\frac {\Gamma \left(k-{\frac {r}{m}}+1\right)}{\Gamma \left(1-{\frac {r}{m}}\right)}}.}
Неполный факториал
Убывающий факториал
Убывающим факториалом называется выражение
- (n)k=nk_=n[k]=n⋅(n−1)⋅…⋅(n−k+1)=n!(n−k)!=∏i=n−k+1ni{\displaystyle (n)_{k}=n^{\underline {k}}=n^{[k]}=n\cdot (n-1)\cdot \ldots \cdot (n-k+1)={\frac {n!}{(n-k)!}}=\prod _{i=n-k+1}^{n}i}.
Например:
- n = 7; k = 4,
- (n − k) + 1 = 4,
- nk = 7 • 6 • 5 • 4 = 840.
Убывающий факториал даёт число размещений из n по k.
Возрастающий факториал
Возрастающим факториалом называется выражение
- n(k)=nk¯=n⋅(n+1)⋅…⋅(n+k−1)=(n+k−1)!(n−1)!=∏i=n(n+k)−1i.{\displaystyle n^{(k)}=n^{\overline {k}}=n\cdot (n+1)\cdot \ldots \cdot (n+k-1)={\frac {(n+k-1)!}{(n-1)!}}=\prod _{i=n}^{(n+k)-1}i.}
Праймориал или примориал
Праймориал или примориал (англ. primorial) числа n обозначается pn# и определяется как произведение n первых простых чисел. Например,
- p5#=2×3×5×7×11=2310{\displaystyle p_{5}\#=2\times 3\times 5\times 7\times 11=2310}.
Иногда праймориалом называют число n#{\displaystyle n\#}, определяемое как произведение всех простых чисел, не превышающих заданное n.
Последовательность праймориалов (включая 1#≡1{\displaystyle {\textstyle {1\#\equiv 1}}}) начинается так[8]:
- 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 410, 32 589 158 477 190 044 730, 1 922 760 350 154 212 639 070, …
Суперфакториалы
Нейл Слоан и Симон Плуффэ (англ.) в 1995 году определили суперфакториал как произведение первых n факториалов. Согласно этому определению, суперфакториал четырёх равен
- sf(4)=1!×2!×3!×4!=288{\displaystyle \operatorname {sf} (4)=1!\times 2!\times 3!\times 4!=288}
(поскольку устоявшегося обозначения нет, используется функциональное).
В общем
- sf(n)=∏k=1nk!=∏k=1nkn−k+1=1n⋅2n−1⋅3n−2⋯(n−1)2⋅n1.{\displaystyle \operatorname {sf} (n)=\prod _{k=1}^{n}k!=\prod _{k=1}^{n}k^{n-k+1}=1^{n}\cdot 2^{n-1}\cdot 3^{n-2}\cdots (n-1)^{2}\cdot n^{1}.}
Последовательность суперфакториалов чисел n⩾0{\displaystyle n\geqslant 0} начинается так[9]:
- 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 736 522 240 000 000, 265 790 267 296 391 946 810 949 632 000 000 000, 127 313 963 299 399 416 749 559 771 247 411 200 000 000 000, …
Идея была обобщена в 2000 году Генри Боттомли (англ.), что привело к гиперфакториалам (англ. Hyperfactorial), которые являются произведением первых n суперфакториалов. Последовательность гиперфакториалов чисел n⩾0{\displaystyle n\geqslant 0} начинается так[10]:
- 1, 1, 2, 24, 6912, 238 878 720, 5 944 066 965 504 000, 745 453 331 864 786 829 312 000 000, 3 769 447 945 987 085 350 501 386 572 267 520 000 000 000, 6 916 686 207 999 802 072 984 424 331 678 589 933 649 915 805 696 000 000 000 000 000, …
Продолжая рекуррентно, можно определить факториал кратного уровня, или m-уровневый факториал числа n, как произведение (m − 1)-уровневых факториалов чисел от 1 до n, то есть
- mf(n,m)=mf(n−1,m)mf(n,m−1)=∏k=1nk(n−k+m−1n−k),{\displaystyle \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},}
где mf(n,0)=n{\displaystyle \operatorname {mf} (n,0)=n} для n>0{\displaystyle n>0} и mf(0,m)=1.{\displaystyle \operatorname {mf} (0,m)=1.}
Субфакториал
Субфакториал !n определяется как количество беспорядков порядка n, то есть перестановок n-элементного множества без неподвижных точек.
См. также
Примечания
- ↑ Коэффициенты этого разложения дают A001163 (числители) и A001164 (знаменатели)
- ↑ Крамп, Кристиан
- ↑ Pearson, Karl (1924), «Historical note on the origin of the normal curve of errors», Biometrika Т. 16: 402–404 [p. 403], DOI 10.2307/2331714 : «Стирлинг лишь показал, что арифметическая константа в формуле Муавра равна 2π{\displaystyle {\sqrt {2\pi }}}. Я считаю, что это не делает его автором теоремы»
- ↑ Дональд Кнут. Искусство программирования, том I. Основные алгоритмы. — М.: Мир, 1976. — С. 79—81. — 736 с.
- ↑ Последовательность A006882 в OEIS
- ↑ «Энциклопедия для детей» Аванта+. Математика.
- ↑ wolframalpha.com.
- ↑ Последовательность A002110 в OEIS
- ↑ Последовательность A000178 в OEIS
- ↑ Последовательность A055462 в OEIS
Факториал 10 000 — Максим Солохин — LiveJournal
Оказывается, Python 3 не накладывает ограничений на длину целого числа! То есть, вычислительные возможности (в целых числах) ограничены только размером оперативной памяти компа и продолжительностью жизни пользователя.
Сразу вспомнилось, как в начале 80-х, впревые взяв в руки калькулятор, я тут же начал брать на нем факторалы больших чисел и выяснил, что максимум, что он способен потянуть — это 69!
[Душещипательные подробности.]
Можете себе представить, в туманном детстве я очень любил фантастику и любил считать. Как-то раз я сел и посчитал орбиту, как лететь до Марса. Я сделал это в ту эпоху, когда калькуляторов у нас в провинции ещё не было. Моим инструментом была логарифмическая линейка (чтобы прикинуть) и таблицы Брадиса (для серьезного счета). Явившийся из будущего Калькулятор показался мне почти божественным инструментом. И тот факт, что он обломался уже на 70! внушил мне на всю жизнь неодолимое уважение к этой функции.
Долгие годы для меня 100! было синонимом недостижимой мечты 🙂 Прошу прощения у гуманитариев за такие неаппетитные метафоры. Но такова се ля ви.
Надеюсь, что никто меня не осудит, узнав, что вчера я первым делом посчитал факториал сотни. И что вы думаете? Во-первых, оказалось, что 100! — это круглое число. Действительно, нули должны накапливаться. Я как-то не задумывался над этим. Вот оно, родимое:
100! =
9332621544394415268169923885626670049071
Аппетит приходит во время еды. Я сразу же посчитал заодно и 1000!:
Кому-то это покажется смешным, а мой мир изменился. В лучшую сторону.
Вот оно:
[Осторожно, много цифр!]
1000! = 4023872600770937735437024339230039857193
Чтоб два раза не вставать, посчитал уж заодно и 10 000! Делов-то. Пара секунд времени.
[Острожно, очень много цифер!!!]10000! = 2846259680917054518906413212119868890148
Факториал — Википедия. Что такое Факториал
Факториа́л — функция, определённая на множестве неотрицательных целых чисел. Название происходит от лат. factorialis — действующий, производящий, умножающий; обозначается n!, произносится эн факториа́л. Факториал натурального числа n определяется как произведение всех натуральных чисел от 1 до n включительно:
- n!=1⋅2⋅…⋅n=∏k=1nk{\displaystyle n!=1\cdot 2\cdot \ldots \cdot n=\prod _{k=1}^{n}k}.
Например,
- 5!=1⋅2⋅3⋅4⋅5=120{\displaystyle 5!=1\cdot 2\cdot 3\cdot 4\cdot 5=120}.
Из определения факториала следует соотношение (n−1)!=n!n{\displaystyle (n-1)!={\frac {n!}{n}}}, откуда при n=1{\displaystyle n=1} формально находим
- 0!=1{\displaystyle 0!=1}.
Последнее равенство обычно принимают в качестве соглашения, хотя, как показано выше, оно следует из определения факториала для натуральных чисел при условии, что все значения функции связаны единым рекуррентным соотношением.
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 |
14 | 87178291200 |
15 | 1307674368000 |
16 | 20922789888000 |
17 | 355687428096000 |
18 | 6402373705728000 |
19 | 121645100408832000 |
20 | 2432902008176640000 |
25 | ≈1,551121004 × 1025 |
50 | ≈3,041409320 × 1064 |
70 | ≈1,197857167 × 10100 |
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 |
Факториал активно используется в различных разделах математики: комбинаторике, математическом анализе, теории чисел, функциональном анализе и др.
Факториал является чрезвычайно быстро растущей функцией. Он растёт быстрее, чем любая показательная функция или любая степенная функция, а также быстрее, чем любая сумма произведений этих функций. Однако, степенно-показательная функция nn{\displaystyle n^{n}} растёт быстрее факториала, так же как и большинство двойных степенных, например een{\displaystyle e^{e^{n}}}.
Свойства
Рекуррентная формула
- n!={1n=0,n⋅(n−1)!n>0.{\displaystyle 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{\displaystyle 0!=1}. Так, формула для числа размещений из n{\displaystyle n} элементов по m{\displaystyle m}
- Anm=n!(n−m)!{\displaystyle A_{n}^{m}={\frac {n!}{(n-m)!}}}
при n=m{\displaystyle n=m} обращается в формулу для числа перестановок из n{\displaystyle n} элементов (порядка n{\displaystyle n}), которое равно n!{\displaystyle n!}.
Связь с гамма-функцией
Пи-функция, определённая для всех вещественных чисел, кроме отрицательных целых, и совпадающая при натуральных значениях аргумента с факториалом.
Факториал связан с гамма-функцией от целочисленного аргумента соотношением
- n!=Γ(n+1){\displaystyle n!=\Gamma (n+1)}.
Это же выражение используют для обобщения понятия факториала на множество вещественных чисел. Используя аналитическое продолжение гамма-функции, область определения факториала также расширяют на всю комплексную плоскость, исключая особые точки при n=−1,−2,−3…{\displaystyle n=-1,-2,-3\ldots }.
Непосредственным обобщением факториала на множества вещественных и комплексных чисел служит пи-функция Π(z)=Γ(z+1){\displaystyle \Pi (z)=\Gamma (z+1)}, которая при Re(z)>−1{\displaystyle \mathrm {Re} (z)>-1} может быть определена как
- Π(z)=∫0∞tze−tdt{\displaystyle \Pi (z)=\int _{0}^{\infty }t^{z}e^{-t}\,\mathrm {d} t} (интегральное определение).
Пи-функция натурального числа или нуля совпадает с его факториалом: Π(n)=n!{\displaystyle \Pi (n)=n!}. Как и факториал, пи-функция удовлетворяет рекуррентному соотношению Π(z)=zΠ(z−1){\displaystyle \Pi (z)=z\Pi (z-1)}.
Формула Стирлинга
Формула Стирлинга — асимптотическая формула для вычисления факториала:
- n!=2πn(ne)n(1+112n+1288n2−13951840n3−5712488320n4+163879209018880n5+524681975246796800n6+O(n−7)),{\displaystyle n!={\sqrt {2\pi 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}}}+O\left(n^{-7}\right)\right),}
см. O-большое[1].
Во многих случаях для приближённого значения факториала достаточно рассматривать только главный член формулы Стирлинга:
- n!≈2πn(ne)n.{\displaystyle n!\approx {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}.}
При этом можно утверждать, что
- 2πn(ne)ne1/(12n+1)<n!<2πn(ne)ne1/(12n).{\displaystyle {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}e^{1/(12n+1)}<n!<{\sqrt {2\pi 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! на простые множители в степени
- ⌊np⌋+⌊np2⌋+⌊np3⌋+….{\displaystyle \left\lfloor {\frac {n}{p}}\right\rfloor +\left\lfloor {\frac {n}{p^{2}}}\right\rfloor +\left\lfloor {\frac {n}{p^{3}}}\right\rfloor +\ldots .}
Таким образом,
- n!=∏pp⌊np⌋+⌊np2⌋+…,{\displaystyle n!=\prod _{p}p^{\lfloor {\frac {n}{p}}\rfloor +\lfloor {\frac {n}{p^{2}}}\rfloor +\ldots },}
где произведение берётся по всем простым числам. Можно заметить, что для всякого простого p большего n соответствующий множитель в произведении равен 1, следовательно произведение можно брать лишь по простым p, не превосходящим n.
Связь с производной от степенной функции
Для целого неотрицательного числа n:
- (xn)(n)=n!{\displaystyle \left(x^{n}\right)^{(n)}=n!}
Например:
- (x5)(5)=(5⋅x4)(4)=(5⋅4⋅x3)‴=(5⋅4⋅3⋅x2)″=(5⋅4⋅3⋅2⋅x)′=5⋅4⋅3⋅2⋅1=5!{\displaystyle \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⩾nn⩾n!⩾n{\displaystyle n!^{2}\geqslant n^{n}\geqslant n!\geqslant n}
- Для любого n>1:
- n!{\displaystyle n!} не является квадратом целого числа.
Факториал дробного числа
Для дробного числа, факториал может определяться по формуле:
n!=[n]!⋅([n]+1){n}{\displaystyle n!=[n]!\cdot ([n]+1)^{\left\{n\right\}}}
где, [n]{\displaystyle [n]}- целая часть от изначального числа ([4,5] = 4), a {n}{\displaystyle \{n\}}- дробная часть ({4,5} = 0,5).
История
Факториальные выражения появились ещё в ранних исследованиях по комбинаторике, хотя компактное обозначение n!{\displaystyle n!} предложил французский математик Кристиан Крамп только в 1808 году[2]. Важным этапом стало открытие формулы Стирлинга, которую Джеймс Стирлинг опубликовал в своём трактате «Дифференциальный метод» (лат. Methodus differentialis, 1730 год). Немного ранее почти такую же формулу опубликовал друг Стирлинга Абрахам де Муавр, но в менее завершённом виде (вместо коэффициента 2π{\displaystyle {\sqrt {2\pi }}} была неопределённая константа)[3].
Стирлинг подробно исследовал свойства факториала, вплоть до выяснения вопроса о том, нельзя ли распространить это понятие на произвольные вещественные числа. Он описал несколько возможных путей к реализации этой идеи и высказал мнение, что:
- (12)!=π2{\displaystyle \left({1 \over 2}\right)!={\frac {\sqrt {\pi }}{2}}}
Стирлинг не знал, что годом ранее решение проблемы уже нашёл Леонард Эйлер. В письме к Кристиану Гольдбаху Эйлер описал требуемое обобщение[4]:
- x!=limm→∞mxm!(x+1)(x+2)…(x+m){\displaystyle x!=\lim _{m\to \infty }{\frac {m^{x}m!}{(x+1)(x+2)\dots (x+m)}}}
Развивая эту идею, Эйлер в следующем, 1730 году ввёл понятие гамма-функции в виде классического интеграла. Эти результаты он опубликовал в журнале Санкт-Петербургской Академии наук в 1729—1730 годах.
Обобщения
Двойной факториал
Двойной факториал числа n обозначается n‼ и определяется как произведение всех натуральных чисел в отрезке [1,n], имеющих ту же чётность, что и n.
- n!!=2⋅4⋅6⋅…⋅n=∏i=1n22i=21n2⋅(n2)!{\displaystyle 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!!=1⋅3⋅5⋅…⋅n=∏i=0n−12(2i+1)=n!21n−12⋅(n−12)!{\displaystyle n!!={1\cdot 3\cdot 5\cdot \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!!=(n+1)!(n+1)!!{\displaystyle n!!={\frac {(n+1)!}{(n+1)!!}}}
- Для нечётного n:
- n!!=n!(n−1)!!{\displaystyle n!!={\frac {n!}{(n-1)!!}}}
Выведение формул
Осуществив замену n=2k{\displaystyle n=2k} для чётного n и n=2k+1{\displaystyle n=2k+1} для нечётного n соответственно, где k{\displaystyle k} — целое неотрицательное число, получим:
- для чётного числа:
- (2k)!!=2⋅4⋅6⋅…⋅2k=∏i=1k2i=2k⋅k!{\displaystyle (2k)!!=2\cdot 4\cdot 6\cdot \ldots \cdot 2k=\prod _{i=1}^{k}2i=2^{k}\cdot k!}
- для нечётного числа:
- (2k+1)!!=1⋅3⋅5⋅…⋅(2k+1)=∏i=0k(2i+1)=(2k+1)!2k⋅k!{\displaystyle (2k+1)!!=1\cdot 3\cdot 5\cdot \ldots \cdot (2k+1)=\prod _{i=0}^{k}(2i+1)={\frac {(2k+1)!}{2^{k}\cdot k!}}}
По договорённости: 0!!=1{\displaystyle 0!!=1}. Также это равенство выполняется естественным образом:
- 0!!=20⋅0!=1⋅1=1{\displaystyle 0!!=2^{0}\cdot 0!=1\cdot 1=1}
Двойной факториал, также как и обычный факториал, определён только для целых неотрицательных чисел.
Последовательность значений n!! начинается так[5]:
- 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 обозначается n!!…!⏟m{\displaystyle \textstyle n\underbrace {!!\ldots !} _{m}} и определяется следующим образом. Пусть число n представимо в виде n=mk−r,{\displaystyle n=mk-r,} где k∈Z,{\displaystyle k\in \mathbb {Z} ,} r∈{0,1,…,m−1}.{\displaystyle r\in \{0,1,\ldots ,m-1\}.} Тогда[6]
- n!!…!⏟m=∏i=1k(mi−r){\displaystyle n\underbrace {!!\ldots !} _{m}=\prod _{i=1}^{k}(mi-r)}
Обычный и двойной факториалы являются частными случаями m-кратного факториала для m = 1 и m = 2 соответственно.
Кратный факториал связан с гамма-функцией следующим соотношением[7]:
- n!!…!⏟m=∏i=1k(mi−r)=mk⋅Γ(k−rm+1)Γ(1−rm).{\displaystyle n\underbrace {!!\ldots !} _{m}=\prod _{i=1}^{k}(mi-r)=m^{k}\cdot {\frac {\Gamma \left(k-{\frac {r}{m}}+1\right)}{\Gamma \left(1-{\frac {r}{m}}\right)}}.}
Неполный факториал
Убывающий факториал
Убывающим факториалом называется выражение
- (n)k=nk_=n[k]=n⋅(n−1)⋅…⋅(n−k+1)=n!(n−k)!=∏i=n−k+1ni{\displaystyle (n)_{k}=n^{\underline {k}}=n^{[k]}=n\cdot (n-1)\cdot \ldots \cdot (n-k+1)={\frac {n!}{(n-k)!}}=\prod _{i=n-k+1}^{n}i}.
Например:
- n = 7; k = 4,
- (n − k) + 1 = 4,
- nk = 7 • 6 • 5 • 4 = 840.
Убывающий факториал даёт число размещений из n по k.
Возрастающий факториал
Возрастающим факториалом называется выражение
- n(k)=nk¯=n⋅(n+1)⋅…⋅(n+k−1)=(n+k−1)!(n−1)!=∏i=n(n+k)−1i.{\displaystyle n^{(k)}=n^{\overline {k}}=n\cdot (n+1)\cdot \ldots \cdot (n+k-1)={\frac {(n+k-1)!}{(n-1)!}}=\prod _{i=n}^{(n+k)-1}i.}
Праймориал или примориал
Праймориал или примориал (англ. primorial) числа n обозначается pn# и определяется как произведение n первых простых чисел. Например,
- p5#=2×3×5×7×11=2310{\displaystyle p_{5}\#=2\times 3\times 5\times 7\times 11=2310}.
Иногда праймориалом называют число n#{\displaystyle n\#}, определяемое как произведение всех простых чисел, не превышающих заданное n.
Последовательность праймориалов (включая 1#≡1{\displaystyle {\textstyle {1\#\equiv 1}}}) начинается так[8]:
- 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 410, 32 589 158 477 190 044 730, 1 922 760 350 154 212 639 070, …
Суперфакториалы
Нейл Слоан и Симон Плуффэ (англ.) в 1995 году определили суперфакториал как произведение первых n факториалов. Согласно этому определению, суперфакториал четырёх равен
- sf(4)=1!×2!×3!×4!=288{\displaystyle \operatorname {sf} (4)=1!\times 2!\times 3!\times 4!=288}
(поскольку устоявшегося обозначения нет, используется функциональное).
В общем
- sf(n)=∏k=1nk!=∏k=1nkn−k+1=1n⋅2n−1⋅3n−2⋯(n−1)2⋅n1.{\displaystyle \operatorname {sf} (n)=\prod _{k=1}^{n}k!=\prod _{k=1}^{n}k^{n-k+1}=1^{n}\cdot 2^{n-1}\cdot 3^{n-2}\cdots (n-1)^{2}\cdot n^{1}.}
Последовательность суперфакториалов чисел n⩾0{\displaystyle n\geqslant 0} начинается так[9]:
- 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 736 522 240 000 000, 265 790 267 296 391 946 810 949 632 000 000 000, 127 313 963 299 399 416 749 559 771 247 411 200 000 000 000, …
Идея была обобщена в 2000 году Генри Боттомли (англ.), что привело к гиперфакториалам (англ. Hyperfactorial), которые являются произведением первых n суперфакториалов. Последовательность гиперфакториалов чисел n⩾0{\displaystyle n\geqslant 0} начинается так[10]:
- 1, 1, 2, 24, 6912, 238 878 720, 5 944 066 965 504 000, 745 453 331 864 786 829 312 000 000, 3 769 447 945 987 085 350 501 386 572 267 520 000 000 000, 6 916 686 207 999 802 072 984 424 331 678 589 933 649 915 805 696 000 000 000 000 000, …
Продолжая рекуррентно, можно определить факториал кратного уровня, или m-уровневый факториал числа n, как произведение (m − 1)-уровневых факториалов чисел от 1 до n, то есть
- mf(n,m)=mf(n−1,m)mf(n,m−1)=∏k=1nk(n−k+m−1n−k),{\displaystyle \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},}
где mf(n,0)=n{\displaystyle \operatorname {mf} (n,0)=n} для n>0{\displaystyle n>0} и mf(0,m)=1.{\displaystyle \operatorname {mf} (0,m)=1.}
Субфакториал
Субфакториал !n определяется как количество беспорядков порядка n, то есть перестановок n-элементного множества без неподвижных точек.
См. также
Примечания
Факториал — Википедия. Что такое Факториал
Факториа́л — функция, определённая на множестве неотрицательных целых чисел. Название происходит от лат. factorialis — действующий, производящий, умножающий; обозначается n!, произносится эн факториа́л. Факториал натурального числа n определяется как произведение всех натуральных чисел от 1 до n включительно:
- n!=1⋅2⋅…⋅n=∏k=1nk{\displaystyle n!=1\cdot 2\cdot \ldots \cdot n=\prod _{k=1}^{n}k}.
Например,
- 5!=1⋅2⋅3⋅4⋅5=120{\displaystyle 5!=1\cdot 2\cdot 3\cdot 4\cdot 5=120}.
Из определения факториала следует соотношение (n−1)!=n!n{\displaystyle (n-1)!={\frac {n!}{n}}}, откуда при n=1{\displaystyle n=1} формально находим
- 0!=1{\displaystyle 0!=1}.
Последнее равенство обычно принимают в качестве соглашения, хотя, как показано выше, оно следует из определения факториала для натуральных чисел при условии, что все значения функции связаны единым рекуррентным соотношением.
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 |
14 | 87178291200 |
15 | 1307674368000 |
16 | 20922789888000 |
17 | 355687428096000 |
18 | 6402373705728000 |
19 | 121645100408832000 |
20 | 2432902008176640000 |
25 | ≈1,551121004 × 1025 |
50 | ≈3,041409320 × 1064 |
70 | ≈1,197857167 × 10100 |
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 |
Факториал активно используется в различных разделах математики: комбинаторике, математическом анализе, теории чисел, функциональном анализе и др.
Факториал является чрезвычайно быстро растущей функцией. Он растёт быстрее, чем любая показательная функция или любая степенная функция, а также быстрее, чем любая сумма произведений этих функций. Однако, степенно-показательная функция nn{\displaystyle n^{n}} растёт быстрее факториала, так же как и большинство двойных степенных, например een{\displaystyle e^{e^{n}}}.
Свойства
Рекуррентная формула
- n!={1n=0,n⋅(n−1)!n>0.{\displaystyle 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{\displaystyle 0!=1}. Так, формула для числа размещений из n{\displaystyle n} элементов по m{\displaystyle m}
- Anm=n!(n−m)!{\displaystyle A_{n}^{m}={\frac {n!}{(n-m)!}}}
при n=m{\displaystyle n=m} обращается в формулу для числа перестановок из n{\displaystyle n} элементов (порядка n{\displaystyle n}), которое равно n!{\displaystyle n!}.
Связь с гамма-функцией
Пи-функция, определённая для всех вещественных чисел, кроме отрицательных целых, и совпадающая при натуральных значениях аргумента с факториалом.
Факториал связан с гамма-функцией от целочисленного аргумента соотношением
- n!=Γ(n+1){\displaystyle n!=\Gamma (n+1)}.
Это же выражение используют для обобщения понятия факториала на множество вещественных чисел. Используя аналитическое продолжение гамма-функции, область определения факториала также расширяют на всю комплексную плоскость, исключая особые точки при n=−1,−2,−3…{\displaystyle n=-1,-2,-3\ldots }.
Непосредственным обобщением факториала на множества вещественных и комплексных чисел служит пи-функция Π(z)=Γ(z+1){\displaystyle \Pi (z)=\Gamma (z+1)}, которая при Re(z)>−1{\displaystyle \mathrm {Re} (z)>-1} может быть определена как
- Π(z)=∫0∞tze−tdt{\displaystyle \Pi (z)=\int _{0}^{\infty }t^{z}e^{-t}\,\mathrm {d} t} (интегральное определение).
Пи-функция натурального числа или нуля совпадает с его факториалом: Π(n)=n!{\displaystyle \Pi (n)=n!}. Как и факториал, пи-функция удовлетворяет рекуррентному соотношению Π(z)=zΠ(z−1){\displaystyle \Pi (z)=z\Pi (z-1)}.
Формула Стирлинга
Формула Стирлинга — асимптотическая формула для вычисления факториала:
- n!=2πn(ne)n(1+112n+1288n2−13951840n3−5712488320n4+163879209018880n5+524681975246796800n6+O(n−7)),{\displaystyle n!={\sqrt {2\pi 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}}}+O\left(n^{-7}\right)\right),}
см. O-большое[1].
Во многих случаях для приближённого значения факториала достаточно рассматривать только главный член формулы Стирлинга:
- n!≈2πn(ne)n.{\displaystyle n!\approx {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}.}
При этом можно утверждать, что
- 2πn(ne)ne1/(12n+1)<n!<2πn(ne)ne1/(12n).{\displaystyle {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}e^{1/(12n+1)}<n!<{\sqrt {2\pi 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! на простые множители в степени
- ⌊np⌋+⌊np2⌋+⌊np3⌋+….{\displaystyle \left\lfloor {\frac {n}{p}}\right\rfloor +\left\lfloor {\frac {n}{p^{2}}}\right\rfloor +\left\lfloor {\frac {n}{p^{3}}}\right\rfloor +\ldots .}
Таким образом,
- n!=∏pp⌊np⌋+⌊np2⌋+…,{\displaystyle n!=\prod _{p}p^{\lfloor {\frac {n}{p}}\rfloor +\lfloor {\frac {n}{p^{2}}}\rfloor +\ldots },}
где произведение берётся по всем простым числам. Можно заметить, что для всякого простого p большего n соответствующий множитель в произведении равен 1, следовательно произведение можно брать лишь по простым p, не превосходящим n.
Связь с производной от степенной функции
Для целого неотрицательного числа n:
- (xn)(n)=n!{\displaystyle \left(x^{n}\right)^{(n)}=n!}
Например:
- (x5)(5)=(5⋅x4)(4)=(5⋅4⋅x3)‴=(5⋅4⋅3⋅x2)″=(5⋅4⋅3⋅2⋅x)′=5⋅4⋅3⋅2⋅1=5!{\displaystyle \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⩾nn⩾n!⩾n{\displaystyle n!^{2}\geqslant n^{n}\geqslant n!\geqslant n}
- Для любого n>1:
- n!{\displaystyle n!} не является квадратом целого числа.
История
Факториальные выражения появились ещё в ранних исследованиях по комбинаторике, хотя компактное обозначение n!{\displaystyle n!} предложил французский математик Кристиан Крамп только в 1808 году[2]. Важным этапом стало открытие формулы Стирлинга, которую Джеймс Стирлинг опубликовал в своём трактате «Дифференциальный метод» (лат. Methodus differentialis, 1730 год). Немного ранее почти такую же формулу опубликовал друг Стирлинга Абрахам де Муавр, но в менее завершённом виде (вместо коэффициента 2π{\displaystyle {\sqrt {2\pi }}} была неопределённая константа)[3].
Стирлинг подробно исследовал свойства факториала, вплоть до выяснения вопроса о том, нельзя ли распространить это понятие на произвольные вещественные числа. Он описал несколько возможных путей к реализации этой идеи и высказал мнение, что:
- (12)!=π2{\displaystyle \left({1 \over 2}\right)!={\frac {\sqrt {\pi }}{2}}}
Стирлинг не знал, что годом ранее решение проблемы уже нашёл Леонард Эйлер. В письме к Кристиану Гольдбаху Эйлер описал требуемое обобщение[4]:
- x!=limm→∞mxm!(x+1)(x+2)…(x+m){\displaystyle x!=\lim _{m\to \infty }{\frac {m^{x}m!}{(x+1)(x+2)\dots (x+m)}}}
Развивая эту идею, Эйлер в следующем, 1730 году ввёл понятие гамма-функции в виде классического интеграла. Эти результаты он опубликовал в журнале Санкт-Петербургской Академии наук в 1729—1730 годах.
Обобщения
Двойной факториал
Двойной факториал числа n обозначается n‼ и определяется как произведение всех натуральных чисел в отрезке [1,n], имеющих ту же чётность, что и n.
- n!!=2⋅4⋅6⋅…⋅n=∏i=1n22i=21n2⋅(n2)!{\displaystyle 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!!=1⋅3⋅5⋅…⋅n=∏i=0n−12(2i+1)=n!21n−12⋅(n−12)!{\displaystyle n!!={1\cdot 3\cdot 5\cdot \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!!=(n+1)!(n+1)!!{\displaystyle n!!={\frac {(n+1)!}{(n+1)!!}}}
- Для нечётного n:
- n!!=n!(n−1)!!{\displaystyle n!!={\frac {n!}{(n-1)!!}}}
Выведение формул
Осуществив замену n=2k{\displaystyle n=2k} для чётного n и n=2k+1{\displaystyle n=2k+1} для нечётного n соответственно, где k{\displaystyle k} — целое неотрицательное число, получим:
- для чётного числа:
- (2k)!!=2⋅4⋅6⋅…⋅2k=∏i=1k2i=2k⋅k!{\displaystyle (2k)!!=2\cdot 4\cdot 6\cdot \ldots \cdot 2k=\prod _{i=1}^{k}2i=2^{k}\cdot k!}
- для нечётного числа:
- (2k+1)!!=1⋅3⋅5⋅…⋅(2k+1)=∏i=0k(2i+1)=(2k+1)!2k⋅k!{\displaystyle (2k+1)!!=1\cdot 3\cdot 5\cdot \ldots \cdot (2k+1)=\prod _{i=0}^{k}(2i+1)={\frac {(2k+1)!}{2^{k}\cdot k!}}}
По договорённости: 0!!=1{\displaystyle 0!!=1}. Также это равенство выполняется естественным образом:
- 0!!=20⋅0!=1⋅1=1{\displaystyle 0!!=2^{0}\cdot 0!=1\cdot 1=1}
Двойной факториал, также как и обычный факториал, определён только для целых неотрицательных чисел.
Последовательность значений n!! начинается так[5]:
- 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 обозначается n!!…!⏟m{\displaystyle \textstyle n\underbrace {!!\ldots !} _{m}} и определяется следующим образом. Пусть число n представимо в виде n=mk−r,{\displaystyle n=mk-r,} где k∈Z,{\displaystyle k\in \mathbb {Z} ,} r∈{0,1,…,m−1}.{\displaystyle r\in \{0,1,\ldots ,m-1\}.} Тогда[6]
- n!!…!⏟m=∏i=1k(mi−r){\displaystyle n\underbrace {!!\ldots !} _{m}=\prod _{i=1}^{k}(mi-r)}
Обычный и двойной факториалы являются частными случаями m-кратного факториала для m = 1 и m = 2 соответственно.
Кратный факториал связан с гамма-функцией следующим соотношением[7]:
- n!!…!⏟m=∏i=1k(mi−r)=mk⋅Γ(k−rm+1)Γ(1−rm).{\displaystyle n\underbrace {!!\ldots !} _{m}=\prod _{i=1}^{k}(mi-r)=m^{k}\cdot {\frac {\Gamma \left(k-{\frac {r}{m}}+1\right)}{\Gamma \left(1-{\frac {r}{m}}\right)}}.}
Неполный факториал
Убывающий факториал
Убывающим факториалом называется выражение
- (n)k=nk_=n[k]=n⋅(n−1)⋅…⋅(n−k+1)=n!(n−k)!=∏i=n−k+1ni{\displaystyle (n)_{k}=n^{\underline {k}}=n^{[k]}=n\cdot (n-1)\cdot \ldots \cdot (n-k+1)={\frac {n!}{(n-k)!}}=\prod _{i=n-k+1}^{n}i}.
Например:
- n = 7; k = 4,
- (n − k) + 1 = 4,
- nk = 7 • 6 • 5 • 4 = 840.
Убывающий факториал даёт число размещений из n по k.
Возрастающий факториал
Возрастающим факториалом называется выражение
- n(k)=nk¯=n⋅(n+1)⋅…⋅(n+k−1)=(n+k−1)!(n−1)!=∏i=n(n+k)−1i.{\displaystyle n^{(k)}=n^{\overline {k}}=n\cdot (n+1)\cdot \ldots \cdot (n+k-1)={\frac {(n+k-1)!}{(n-1)!}}=\prod _{i=n}^{(n+k)-1}i.}
Праймориал или примориал
Праймориал или примориал (англ. primorial) числа n обозначается pn# и определяется как произведение n первых простых чисел. Например,
- p5#=2×3×5×7×11=2310{\displaystyle p_{5}\#=2\times 3\times 5\times 7\times 11=2310}.
Иногда праймориалом называют число n#{\displaystyle n\#}, определяемое как произведение всех простых чисел, не превышающих заданное n.
Последовательность праймориалов (включая 1#≡1{\displaystyle {\textstyle {1\#\equiv 1}}}) начинается так[8]:
- 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 410, 32 589 158 477 190 044 730, 1 922 760 350 154 212 639 070, …
Суперфакториалы
Нейл Слоан и Симон Плуффэ (англ.) в 1995 году определили суперфакториал как произведение первых n факториалов. Согласно этому определению, суперфакториал четырёх равен
- sf(4)=1!×2!×3!×4!=288{\displaystyle \operatorname {sf} (4)=1!\times 2!\times 3!\times 4!=288}
(поскольку устоявшегося обозначения нет, используется функциональное).
В общем
- sf(n)=∏k=1nk!=∏k=1nkn−k+1=1n⋅2n−1⋅3n−2⋯(n−1)2⋅n1.{\displaystyle \operatorname {sf} (n)=\prod _{k=1}^{n}k!=\prod _{k=1}^{n}k^{n-k+1}=1^{n}\cdot 2^{n-1}\cdot 3^{n-2}\cdots (n-1)^{2}\cdot n^{1}.}
Последовательность суперфакториалов чисел n⩾0{\displaystyle n\geqslant 0} начинается так[9]:
- 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 736 522 240 000 000, 265 790 267 296 391 946 810 949 632 000 000 000, 127 313 963 299 399 416 749 559 771 247 411 200 000 000 000, …
Идея была обобщена в 2000 году Генри Боттомли (англ.), что привело к гиперфакториалам (англ. Hyperfactorial), которые являются произведением первых n суперфакториалов. Последовательность гиперфакториалов чисел n⩾0{\displaystyle n\geqslant 0} начинается так[10]:
- 1, 1, 2, 24, 6912, 238 878 720, 5 944 066 965 504 000, 745 453 331 864 786 829 312 000 000, 3 769 447 945 987 085 350 501 386 572 267 520 000 000 000, 6 916 686 207 999 802 072 984 424 331 678 589 933 649 915 805 696 000 000 000 000 000, …
Продолжая рекуррентно, можно определить факториал кратного уровня, или m-уровневый факториал числа n, как произведение (m − 1)-уровневых факториалов чисел от 1 до n, то есть
- mf(n,m)=mf(n−1,m)mf(n,m−1)=∏k=1nk(n−k+m−1n−k),{\displaystyle \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},}
где mf(n,0)=n{\displaystyle \operatorname {mf} (n,0)=n} для n>0{\displaystyle n>0} и mf(0,m)=1.{\displaystyle \operatorname {mf} (0,m)=1.}
Субфакториал
Субфакториал !n определяется как количество беспорядков порядка n, то есть перестановок n-элементного множества без неподвижных точек.
См. также
Примечания
- ↑ Коэффициенты этого разложения дают A001163 (числители) и A001164 (знаменатели)
- ↑ Крамп, Кристиан
- ↑ Pearson, Karl (1924), «Historical note on the origin of the normal curve of errors», Biometrika Т. 16: 402–404 [p. 403], DOI 10.2307/2331714 : «Стирлинг лишь показал, что арифметическая константа в формуле Муавра равна 2π{\displaystyle {\sqrt {2\pi }}}. Я считаю, что это не делает его автором теоремы»
- ↑ Дональд Кнут. Искусство программирования, том I. Основные алгоритмы. — М.: Мир, 1976. — С. 79—81. — 736 с.
- ↑ Последовательность A006882 в OEIS
- ↑ «Энциклопедия для детей» Аванта+. Математика.
- ↑ wolframalpha.com.
- ↑ Последовательность A002110 в OEIS
- ↑ Последовательность A000178 в
Факториал 1000
402,387,260,077,093,773,543,702,433,923,003,985,719,374,864,
210,714,632,543,799,910,429,938,512,398,629,020,592,044,208,
486,969,404,800,479,988,610,197,196,058,631,666,872,994,808,
558,901,323,829,669,944,590,997,424,504,087,073,759,918,823,
627,727,188,732,519,779,505,950,995,276,120,874,975,462,497,
043,601,418,278,094,646,496,291,056,393,887,437,886,487,337,
119,181,045,825,783,647,849,977,012,476,632,889,835,955,735,
432,513,185,323,958,463,075,557,409,114,262,417,474,349,347,
553,428,646,576,611,667,797,396,668,820,291,207,379,143,853,
719,588,249,808,126,867,838,374,559,731,746,136,085,379,534,
524,221,586,593,201,928,090,878,297,308,431,392,844,403,281,
231,558,611,036,976,801,357,304,216,168,747,609,675,871,348,
312,025,478,589,320,767,169,132,448,426,236,131,412,508,780,
208,000,261,683,151,027,341,827,977,704,784,635,868,170,164,
365 024 153 691 398 281 264 810 213 092 761 244 896 359 928,
705,114,964,975,419,909,342,221,566,832,572,080,821,333,186,
116,811,553,615,836,546,984,046,708,975,602,900,950,537,616,
475,847,728,421,889,679,646,244,945,160,765,353,408,198,901,
385,442,487,984,959,953,319,101,723,355,556,602,139,450,399,
736,280,750,137,837,615,307,127,761,926,849,034,352,625,200,
015,888,535,147,331,611,702,103,968,175,921,510,907,788,019,
393,178,114,194,545,257,223,865,541,461,062,892,187,960,223,
838 971 476 088 506 276 862 967 146 674 697 562 911 234 082,
439,208,160,153,780,889,893,964,518,263,243,671,616,762,179,
168,909,779,911,903,754,031,274,622,289,988,005,195,444,414,
282,012,187,361,745,992,642,956,581,746,628,302,955,570,299,
024,324,153,181,617,210,465,832,036,786,906,117,260,158,783,
520,751,516,284,225,540,265,170,483,304,226,143,974,286,933,
061,690,897,968,482,590,125,458,327,168,226,458,066,526,769,
958,652,682,272,807,075,781,391,858,178,889,652,208,164,348,
344,825,993,266,043,367,660,176,999,612,831,860,788,386,150,
279,465,955,131,156,552,036,093,988,180,612,138,558,600,301,
435,694,527,224,206,344,631,797,460,594,682,573,103,790,084,
024,432,438,465,657,245,014,402,821,885,252,470,935,190,620,
929,023,136,493,273,497,565,513,958,720,559,654,228,749,774,
011,413,346,962,715,422,845,862,377,387,538,230,483,865,688,
976,461,927,383,814,900,140,767,310,446,640,259,899,490,222,
221,765,904,339,901,886,018,566,526,485,061,799,702,356,193,
897,017,860,040,811,889,729,918,311,021,171,229,845,901,641,
921,068,884,387,121,855,646,124,960,798,722,908,519,296,819,
372,388,642,614,839,657,382,291,123,125,024,186,649,353,143,
970,137,428,531,926,649,875,337,218,940,694,281,434,118,520,
158,014,123,344,828,015,051,399,694,290,153,483,077,644,569,
099,073,152,433,278,288,269,864,602,789,864,321,139,083,506,
217,095,002,597,389,863,554,277,196,742,822,248,757,586,765,
752,344,220,207,573,630,569,498,825,087,968,928,162,753,848,
863,396,909,959,826,280,956,121,450,994,871,701,244,516,461,
260,379,029,309,120,889,086,942,028,510,640,182,154,399,457,
156,805,941,872,748,998,094,254,742,173,582,401,063,677,404,
595,741,785,160,829,230,135,358,081,840,096,996,372,524,230,
560,855,903,700,624,271,243,416,909,004,153,690,105,933,983,
835,777,939,410,970,027,753,472,000,000,000,000,000,000,000,
000000000000000000000000000000000000000000000000000,
00000000000000000000000000000000000000000000000,
000000000000000000000000000000000000000000000000000,
000000000000000000000000000000000000000000000000000,
00000000000000000000000000000000000000000000000,
000
[Пейдж Джастина]
[10,000-летний календарь]
.
1000 Факториал — CodeProject
Введение
Факториал или произведение положительных целых чисел — одна из наиболее часто используемых математических функций (или процессов). Многие математические вычисления должны иметь точный результат факториала большого числа, например 1000! найти окончательный ответ с высокой точностью. Но проблема в том, что ни в одном языке программирования нет переменной или механизма для хранения такой большой цифры. Все языки программирования и калькуляторы оценивают результат и затем сохраняют его как научное число.Например, калькулятор Windows XP отображает 1000! как это:
4.02387260077093773543702433923 e + 2567
Итак, я решил придумать алгоритм решения этой проблемы.
Алгоритм
Вы знаете, что для вычисления факториала числа вы должны умножить все числа от 1 до самого себя, например:
1000! = 1 * 2 * 3 * …… * 998 * 999 * 1000
Ни в одном языке программирования нет переменной, которая могла бы точно хранить результат этого умножения; кроме сохранения в экспоненциальном представлении.Из-за огромного результата последовательного умножения необходимо найти новую стратегию или механизм.
В моем рекомендуемом алгоритме число не рассматривается как число, вместо этого оно рассматривается как последовательные цифры, каждая из которых имеет собственное числовое значение. Фактически доступен массив цифр. Каждый раз второе число умножается на каждую цифру первого числа (индекс массива), а затем добавляется с числом переноса вверх от предыдущего умножения.
Этот процесс показан, например, 12 !:
12! = 11! * 12 11! = 39916800 12! = 4700
- Если результат меньше 10, результат будет помещен в ячейку массива.
- Если оно равно или больше 10, оно будет разделено на 10, а затем остаток будет помещен в ячейку массива, а частное будет помещено в переменную, которая будет добавлена при следующем ответе умножения.
Примечание: Обратите внимание, что все числа сохраняются с конца массива, так же, как при обычном вычислении (реальное вычисление).
Код программирования
Декларации
int numArr [3000];
int total, rem = 0, count;
зарегистрировать int i;
В первой строке определяется массив, размер которого зависит от факториального размера.« rem
» определяется для хранения остатка от деления.
В конце определяется целочисленная переменная с именем « i
», которая играет роль счетчика циклов и индекса массива и из-за большого доступа определяется как регистр.
Модификатор типа регистра указывает компилятору сохранить объявленную переменную в регистре ЦП (если возможно) для оптимизации доступа.
Примечание : В современных компиляторах есть хороший оптимизатор, который решает, какие переменные следует хранить в регистрах.Они сами выбирают регистры, когда включена глобальная оптимизация распределения регистров.
Основная часть кода
i = 2999;
numArr [2999] = 1;
for (count = 2; count <= 1000; count ++)
{
а (я> 0)
{
total = numArr [i] * count + rem;
rem = 0;
если (всего> 9)
{
numArr [i] = всего% 10;
rem = всего / 10;
}
еще
numArr [i] = всего;
я--;
}
rem = 0;
всего = 0;
i = 2999;
}
В соответствии с алгоритмом, который был объяснен ранее, существует цикл подсчета от 2 до 1000, и каждый раз значение « count
» умножается на ячейку массива и добавляется с « rem
», которое содержит перенос из предыдущего умножения.
Наконец, результат сохраняется в ‘ total
‘ и затем помещается в ячейку массива.
Другой алгоритм
Сначала я нашел другой алгоритм решения этой проблемы. Он основан на моделировании умножения путем последовательного сложения. Например, 20 = 4 * 5, а также 20 = (5 + 5 + 5 + 5).
Итак, поместите числа в массив, а затем сложите его с самим собой «X» раз.
Х за 1000! это:
X = ∑ n
n = 1,2,3,…, 999,1000
Примечание : Этот алгоритм не так оптимален, как первый, который я объяснил.Также это слишком скучно и требует нескольких больших массивов. Второй файл ZIP принадлежит этому алгоритму.
Достопримечательности
Хочу отметить, что алгоритм имеет высокую скорость вычислений, поэтому переводит программу в вполне оптимальное состояние.
Одна из наиболее важных особенностей этого алгоритма — использование только одного массива, тогда как другим алгоритмам требуется больше памяти (использование нескольких массивов для имитации умножения на последовательные суммы).
Кроме того, меньшее количество кода помогает легче понять программу, и вы можете переписать ее на любом языке программирования.
Одна из причин высокой скорости выполнения — использование регистровой переменной в качестве счетчика цикла. Счетчик цикла — это переменная, имеющая к ней наибольший доступ.
Использование
Как я упоминал во введении, факториальная операция используется во многих математических вычислениях, особенно в вычислениях, которые относятся к статистике, требующей точного результата факториала.
Таким образом, эта программа может быть частью любой программы, которая требует факторного метода, например, статистического программного обеспечения.
Оценка
Я хотел бы поблагодарить господина Фермиска Насерзаде за то, что он познакомил меня с этой проблемой, и господина Ираджа Сафа за помощь в редактировании этой статьи.
.