Template:Short description Template:Use mdy dates Template:About Template:Good article
<math>n</math> | <math>n!</math> |
---|---|
0 | 1 |
1 | 1 |
2 | 2 |
3 | 6 |
4 | 24 |
5 | 120 |
6 | 720 |
7 | Template:Val |
8 | Template:Val |
9 | Template:Val |
10 | Template:Val |
11 | Template:Val |
12 | Template:Val |
13 | Template:Val |
14 | Template:Val |
15 | Template:Val |
16 | Template:Val |
17 | Template:Val |
18 | Template:Val |
19 | Template:Val |
20 | Template:Val |
25 | Template:Val |
50 | Template:Val |
70 | Template:Val |
100 | Template:Val |
450 | Template:Val |
Template:Val | Template:Val |
Template:Val | Template:Val |
Template:Val | Template:Val |
Template:Val | Template:Val |
Template:Val | Template:Val |
Template:Val | Template:Val |
Template:Val | Template:Val |
[[googol|Template:Val]] | 10Template:Val |
In mathematics, the factorial of a non-negative Template:Nowrap denoted Template:Nowrap is the product of all positive integers less than or equal Template:Nowrap The factorial Template:Nowrap also equals the product of <math>n</math> with the next smaller factorial: <math display="block"> \begin{align} n! &= n \times (n-1) \times (n-2) \times (n-3) \times \cdots \times 3 \times 2 \times 1 \\
&= n\times(n-1)!\\
\end{align}</math> For example, <math display="block">5! = 5\times 4! = 5 \times 4 \times 3 \times 2 \times 1 = 120. </math> The value of 0! is 1, according to the convention for an empty product.<ref name="gkp">Template:Cite book</ref>
Factorials have been discovered in several ancient cultures, notably in Indian mathematics in the canonical works of Jain literature, and by Jewish mystics in the Talmudic book Sefer Yetzirah. The factorial operation is encountered in many areas of mathematics, notably in combinatorics, where its most basic use counts the possible distinct sequences – the permutations – of <math>n</math> distinct objects: there Template:Nowrap In mathematical analysis, factorials are used in power series for the exponential function and other functions, and they also have applications in algebra, number theory, probability theory, and computer science.
Much of the mathematics of the factorial function was developed beginning in the late 18th and early 19th centuries. Stirling's approximation provides an accurate approximation to the factorial of large numbers, showing that it grows more quickly than exponential growth. Legendre's formula describes the exponents of the prime numbers in a prime factorization of the factorials, and can be used to count the trailing zeros of the factorials. Daniel Bernoulli and Leonhard Euler interpolated the factorial function to a continuous function of complex numbers, except at the negative integers, the (offset) gamma function.
Many other notable functions and number sequences are closely related to the factorials, including the binomial coefficients, double factorials, falling factorials, primorials, and subfactorials. Implementations of the factorial function are commonly used as an example of different computer programming styles, and are included in scientific calculators and scientific computing software libraries. Although directly computing large factorials using the product formula or recurrence is not efficient, faster algorithms are known, matching to within a constant factor the time for fast multiplication algorithms for numbers with the same number of digits.
HistoryEdit
The concept of factorials has arisen independently in many cultures:
- In Indian mathematics, one of the earliest known descriptions of factorials comes from the Anuyogadvāra-sūtra,<ref name=datta-singh/> one of the canonical works of Jain literature, which has been assigned dates varying from 300 BCE to 400 CE.<ref>Template:Cite journal. See discussion of dating on p. 211.</ref> It separates out the sorted and reversed order of a set of items from the other ("mixed") orders, evaluating the number of mixed orders by subtracting two from the usual product formula for the factorial. The product rule for permutations was also described by 6th-century CE Jain monk Jinabhadra.<ref name=datta-singh>Template:Cite book. Revised by K. S. Shukla from a paper in Indian Journal of History of Science 27 (3): 231–249, 1992, Template:MR. See p. 363.</ref> Hindu scholars have been using factorial formulas since at least 1150, when Bhāskara II mentioned factorials in his work Līlāvatī, in connection with a problem of how many ways Vishnu could hold his four characteristic objects (a conch shell, discus, mace, and lotus flower) in his four hands, and a similar problem for a ten-handed god.<ref>Template:Cite journal</ref>
- In the mathematics of the Middle East, the Hebrew mystic book of creation Sefer Yetzirah, from the Talmudic period (200 to 500 CE), lists factorials up to 7! as part of an investigation into the number of words that can be formed from the Hebrew alphabet.<ref name=katz>Template:Cite journal</ref><ref>Sefer Yetzirah at Wikisource, Chapter IV, Section 4</ref> Factorials were also studied for similar reasons by 8th-century Arab grammarian Al-Khalil ibn Ahmad al-Farahidi.<ref name=katz/> Arab mathematician Ibn al-Haytham (also known as Alhazen, c. 965 – c. 1040) was the first to formulate Wilson's theorem connecting the factorials with the prime numbers.<ref>Template:Cite journal</ref>
- In Europe, although Greek mathematics included some combinatorics, and Plato famously used 5,040 (a factorial) as the population of an ideal community, in part because of its divisibility properties,<ref>Template:Cite journal</ref> there is no direct evidence of ancient Greek study of factorials. Instead, the first work on factorials in Europe was by Jewish scholars such as Shabbethai Donnolo, explicating the Sefer Yetzirah passage.<ref>Template:Cite book See p. 111.</ref> In 1677, British author Fabian Stedman described the application of factorials to change ringing, a musical art involving the ringing of several tuned bells.<ref>Template:Cite journal</ref><ref>Template:Cite book The publisher is given as "W.S." who may have been William Smith, possibly acting as agent for the Society of College Youths, to which society the "Dedicatory" is addressed.</ref>
From the late 15th century onward, factorials became the subject of study by Western mathematicians. In a 1494 treatise, Italian mathematician Luca Pacioli calculated factorials up to 11!, in connection with a problem of dining table arrangements.<ref>Template:Cite book See p. 126.</ref> Christopher Clavius discussed factorials in a 1603 commentary on the work of Johannes de Sacrobosco, and in the 1640s, French polymath Marin Mersenne published large (but not entirely correct) tables of factorials, up to 64!, based on the work of Clavius.Template:Sfn The power series for the exponential function, with the reciprocals of factorials for its coefficients, was first formulated in 1676 by Isaac Newton in a letter to Gottfried Wilhelm Leibniz.<ref name=exponential-series>Template:Cite book</ref> Other important works of early European mathematics on factorials include extensive coverage in a 1685 treatise by John Wallis, a study of their approximate values for large values of <math>n</math> by Abraham de Moivre in 1721, a 1729 letter from James Stirling to de Moivre stating what became known as Stirling's approximation, and work at the same time by Daniel Bernoulli and Leonhard Euler formulating the continuous extension of the factorial function to the gamma function.<ref>Template:Cite journal</ref> Adrien-Marie Legendre included Legendre's formula, describing the exponents in the factorization of factorials into prime powers, in an 1808 text on number theory.<ref>Template:Cite book See in particular p. 263.</ref>
The notation <math>n!</math> for factorials was introduced by the French mathematician Christian Kramp in 1808.<ref name=cajori/> Many other notations have also been used. Another later notation <math>\vert\!\underline{\,n}</math>, in which the argument of the factorial was half-enclosed by the left and bottom sides of a box, was popular for some time in Britain and America but fell out of use, perhaps because it is difficult to typeset.<ref name=cajori>Template:Cite book</ref> The word "factorial" (originally French: factorielle) was first used in 1800 by Louis François Antoine Arbogast,<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> in the first work on Faà di Bruno's formula,<ref name=craik>Template:Cite journal</ref> but referring to a more general concept of products of arithmetic progressions. The "factors" that this name refers to are the terms of the product formula for the factorial.<ref>Template:Cite book</ref>
DefinitionEdit
The factorial function of a positive integer <math>n</math> is defined by the product of all positive integers not greater than <math>n</math><ref name=gkp/> <math display=block>n! = 1 \cdot 2 \cdot 3 \cdots (n-2) \cdot (n-1) \cdot n.</math> This may be written more concisely in product notation as<ref name=gkp/> <math display=block>n! = \prod_{i = 1}^n i.</math>
If this product formula is changed to keep all but the last term, it would define a product of the same form, for a smaller factorial. This leads to a recurrence relation, according to which each value of the factorial function can be obtained by multiplying the previous value Template:Nowrap <math display=block> n! = n\cdot (n-1)!.</math> For example, Template:Nowrap
Factorial of zeroEdit
The factorial Template:Nowrap Template:Nowrap or in symbols, Template:Nowrap There are several motivations for this definition:
- For Template:Nowrap the definition of <math>n!</math> as a product involves the product of no numbers at all, and so is an example of the broader convention that the empty product, a product of no factors, is equal to the multiplicative identity.<ref>Template:Cite book</ref>
- There is exactly one permutation of zero objects: with nothing to permute, the only rearrangement is to do nothing.<ref name=hamkins>Template:Cite book</ref>
- This convention makes many identities in combinatorics valid for all valid choices of their parameters. For instance, the number of ways to choose all <math>n</math> elements from a set of <math>n</math> is <math display=inline>\tbinom{n}{n} = \tfrac{n!}{n!0!} = 1,</math> a binomial coefficient identity that would only be valid Template:Nowrap
- With Template:Nowrap the recurrence relation for the factorial remains valid Template:Nowrap Therefore, with this convention, a recursive computation of the factorial needs to have only the value for zero as a base case, simplifying the computation and avoiding the need for additional special cases.<ref>Template:Cite conference</ref>
- Setting <math>0!=1</math> allows for the compact expression of many formulae, such as the exponential function, as a power series: Template:Nowrap
- This choice matches the gamma function Template:Nowrap and the gamma function must have this value to be a continuous function.<ref>Template:Cite book</ref>
ApplicationsEdit
The earliest uses of the factorial function involve counting permutations: there are <math>n!</math> different ways of arranging <math>n</math> distinct objects into a sequence.<ref name="ConwayGuy1998">Template:Cite book</ref> Factorials appear more broadly in many formulas in combinatorics, to account for different orderings of objects. For instance the binomial coefficients <math>\tbinom{n}{k}</math> count the Template:Nowrap combinations (subsets of Template:Nowrap from a set with Template:Nowrap and can be computed from factorials using the formulaTemplate:Sfn <math display=block>\binom{n}{k}=\frac{n!}{k!(n-k)!}.</math> The Stirling numbers of the first kind sum to the factorials, and count the permutations Template:Nowrap grouped into subsets with the same numbers of cycles.<ref>Template:Cite book Reprinted, Princeton Legacy Library, Princeton University Press, 2014, Template:Isbn.</ref> Another combinatorial application is in counting derangements, permutations that do not leave any element in its original position; the number of derangements of <math>n</math> items is the nearest integer Template:Nowrap
In algebra, the factorials arise through the binomial theorem, which uses binomial coefficients to expand powers of sums.Template:Sfn They also occur in the coefficients used to relate certain families of polynomials to each other, for instance in Newton's identities for symmetric polynomials.<ref>Template:Cite journal</ref> Their use in counting permutations can also be restated algebraically: the factorials are the orders of finite symmetric groups.<ref>Template:Cite book</ref> In calculus, factorials occur in Faà di Bruno's formula for chaining higher derivatives.<ref name=craik/> In mathematical analysis, factorials frequently appear in the denominators of power series, most notably in the series for the exponential function,<ref name=exponential-series/> <math display=block>e^x=1+\frac{x}{1}+\frac{x^2}{2}+\frac{x^3}{6}+\cdots=\sum_{i=0}^{\infty}\frac{x^i}{i!},</math> and in the coefficients of other Taylor series (in particular those of the trigonometric and hyperbolic functions), where they cancel factors of <math>n!</math> coming from the Template:Nowrap Template:Nowrap This usage of factorials in power series connects back to analytic combinatorics through the exponential generating function, which for a combinatorial class with <math>n_i</math> elements of Template:Nowrap is defined as the power series<ref>Template:Cite book</ref> <math display=block>\sum_{i=0}^{\infty} \frac{x^i n_i}{i!}.</math>
In number theory, the most salient property of factorials is the divisibility of <math>n!</math> by all positive integers up Template:Nowrap described more precisely for prime factors by Legendre's formula. It follows that arbitrarily large prime numbers can be found as the prime factors of the numbers <math>n!\pm 1</math>, leading to a proof of Euclid's theorem that the number of primes is infinite.<ref>Template:Cite book Reprinted, Courier Dover Publications, 1988, Template:Isbn.</ref> When <math>n!\pm 1</math> is itself prime it is called a factorial prime;<ref name=caldwell-gallot>Template:Cite journal</ref> relatedly, Brocard's problem, also posed by Srinivasa Ramanujan, concerns the existence of square numbers of the form Template:Nowrap In contrast, the numbers <math>n!+2,n!+3,\dots n!+n</math> must all be composite, proving the existence of arbitrarily large prime gaps.<ref>Template:Cite book</ref> An elementary proof of Bertrand's postulate on the existence of a prime in any interval of the Template:Nowrap one of the first results of Paul Erdős, was based on the divisibility properties of factorials.<ref>Template:Cite journal</ref><ref>Template:Cite book</ref> The factorial number system is a mixed radix notation for numbers in which the place values of each digit are factorials.<ref>Template:Cite journal</ref>
Factorials are used extensively in probability theory, for instance in the Poisson distribution<ref>Template:Cite book</ref> and in the probabilities of random permutations.Template:Sfn In computer science, beyond appearing in the analysis of brute-force searches over permutations,<ref>Template:Cite book</ref> factorials arise in the lower bound of <math>\log_2 n!=n\log_2n-O(n)</math> on the number of comparisons needed to comparison sort a set of <math>n</math> items,<ref name=knuth-sorting/> and in the analysis of chained hash tables, where the distribution of keys per cell can be accurately approximated by a Poisson distribution.<ref>Template:Cite book</ref> Moreover, factorials naturally appear in formulae from quantum and statistical physics, where one often considers all the possible permutations of a set of particles. In statistical mechanics, calculations of entropy such as Boltzmann's entropy formula or the Sackur–Tetrode equation must correct the count of microstates by dividing by the factorials of the numbers of each type of indistinguishable particle to avoid the Gibbs paradox. Quantum physics provides the underlying reason for why these corrections are necessary.<ref>Template:Cite book</ref>
PropertiesEdit
Growth and approximationEdit
{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}
As a function Template:Nowrap the factorial has faster than exponential growth, but grows more slowly than a double exponential function.<ref>Template:Cite book</ref> Its growth rate is similar Template:Nowrap but slower by an exponential factor. One way of approaching this result is by taking the natural logarithm of the factorial, which turns its product formula into a sum, and then estimating the sum by an integral: <math display="block">\ln n! = \sum_{x=1}^n \ln x \approx \int_1^n\ln x\, dx=n\ln n-n+1.</math> Exponentiating the result (and ignoring the negligible <math>+1</math> term) approximates <math>n!</math> as Template:Nowrap More carefully bounding the sum both above and below by an integral, using the trapezoid rule, shows that this estimate needs a correction factor proportional Template:Nowrap The constant of proportionality for this correction can be found from the Wallis product, which expresses <math>\pi</math> as a limiting ratio of factorials and powers of two. The result of these corrections is Stirling's approximation:<ref>Template:Cite book</ref> <math display="block">n!\sim\sqrt{2\pi n}\left(\frac{n}{e}\right)^n\,.</math> Here, the <math>\sim</math> symbol means that, as <math>n</math> goes to infinity, the ratio between the left and right sides approaches one in the limit. Stirling's formula provides the first term in an asymptotic series that becomes even more accurate when taken to greater numbers of terms:<ref name="asymptotic">Template:Cite journal</ref> <math display="block"> n! \sim \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}+ \cdots \right).</math> An alternative version uses only odd exponents in the correction terms:<ref name=asymptotic/> <math display=block> n! \sim \sqrt{2\pi n}\left(\frac{n}{e}\right)^n \exp\left(\frac{1}{12n} - \frac{1}{360n^3} + \frac{1}{1260n^5} -\frac{1}{1680n^7}+ \cdots \right).</math> Many other variations of these formulas have also been developed, by Srinivasa Ramanujan, Bill Gosper, and others.<ref name=asymptotic/>
The binary logarithm of the factorial, used to analyze comparison sorting, can be very accurately estimated using Stirling's approximation. In the formula below, the <math>O(1)</math> term invokes big O notation.<ref name=knuth-sorting>Template:Cite book</ref> <math display=block>\log_2 n! = n\log_2 n-(\log_2 e)n + \frac12\log_2 n + O(1).</math>
Divisibility and digitsEdit
{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} The product formula for the factorial implies that <math>n!</math> is divisible by all prime numbers that are at Template:Nowrap and by no larger prime numbers.<ref name=beiler>Template:Cite book</ref> More precise information about its divisibility is given by Legendre's formula, which gives the exponent of each prime <math>p</math> in the prime factorization of <math>n!</math> as<ref>Template:Harvnb. "1.4: Legendre's formula". pp. 6–7.</ref><ref name=padic>Template:Cite book</ref> <math display=block>\sum_{i=1}^\infty \left \lfloor \frac n {p^i} \right \rfloor=\frac{n - s_p(n)}{p - 1}.</math> Here <math>s_p(n)</math> denotes the sum of the Template:Nowrap digits Template:Nowrap and the exponent given by this formula can also be interpreted in advanced mathematics as the [[p-adic valuation|Template:Mvar-adic valuation]] of the factorial.<ref name=padic/> Applying Legendre's formula to the product formula for binomial coefficients produces Kummer's theorem, a similar result on the exponent of each prime in the factorization of a binomial coefficient.<ref>Template:Cite book</ref> Grouping the prime factors of the factorial into prime powers in different ways produces the multiplicative partitions of factorials.<ref>Template:Cite journal</ref>
The special case of Legendre's formula for <math>p=5</math> gives the number of trailing zeros in the decimal representation of the factorials.<ref name=koshy/> According to this formula, the number of zeros can be obtained by subtracting the base-5 digits of <math>n</math> from <math>n</math>, and dividing the result by four.<ref>Template:Cite OEIS</ref> Legendre's formula implies that the exponent of the prime <math>p=2</math> is always larger than the exponent for Template:Nowrap so each factor of five can be paired with a factor of two to produce one of these trailing zeros.<ref name=koshy>Template:Cite book</ref> The leading digits of the factorials are distributed according to Benford's law.<ref>Template:Cite journal</ref> Every sequence of digits, in any base, is the sequence of initial digits of some factorial number in that base.<ref>Template:Cite journal</ref>
Another result on divisibility of factorials, Wilson's theorem, states that <math>(n-1)!+1</math> is divisible by <math>n</math> if and only if <math>n</math> is a prime number.<ref name=beiler/> For any given Template:Nowrap the Kempner function of <math>x</math> is given by the smallest <math>n</math> for which <math>x</math> divides Template:Nowrap For almost all numbers (all but a subset of exceptions with asymptotic density zero), it coincides with the largest prime factor Template:Nowrap
The product of two factorials, Template:Nowrap always evenly divides Template:Nowrap There are infinitely many factorials that equal the product of other factorials: if <math>n</math> is itself any product of factorials, then <math>n!</math> equals that same product multiplied by one more factorial, Template:Nowrap The only known examples of factorials that are products of other factorials but are not of this "trivial" form are Template:Nowrap Template:Nowrap and Template:Nowrap It would follow from the [[abc conjecture|Template:Mvar conjecture]] that there are only finitely many nontrivial examples.<ref>Template:Cite journal</ref>
The greatest common divisor of the values of a primitive polynomial of degree <math>d</math> over the integers evenly divides Template:Nowrap
Continuous interpolation and non-integer generalizationEdit
{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} There are infinitely many ways to extend the factorials to a continuous function.<ref name=davis/> The most widely used of these<ref name=borwein-corless/> uses the gamma function, which can be defined for positive real numbers as the integral <math display=block> \Gamma(z) = \int_0^\infty x^{z-1} e^{-x}\,dx.</math> The resulting function is related to the factorial of a non-negative integer <math>n</math> by the equation <math display=block> n!=\Gamma(n+1),</math> which can be used as a definition of the factorial for non-integer arguments. At all values <math>x</math> for which both <math>\Gamma(x)</math> and <math>\Gamma(x-1)</math> are defined, the gamma function obeys the functional equation <math display=block> \Gamma(n)=(n-1)\Gamma(n-1),</math> generalizing the recurrence relation for the factorials.<ref name=davis>Template:Cite journal</ref>
The same integral converges more generally for any complex number <math>z</math> whose real part is positive. It can be extended to the non-integer points in the rest of the complex plane by solving for Euler's reflection formula <math display=block>\Gamma(z)\Gamma(1-z)=\frac{\pi}{\sin\pi z}.</math> However, this formula cannot be used at integers because, for them, the <math>\sin\pi z</math> term would produce a division by zero. The result of this extension process is an analytic function, the analytic continuation of the integral formula for the gamma function. It has a nonzero value at all complex numbers, except for the non-positive integers where it has simple poles. Correspondingly, this provides a definition for the factorial at all complex numbers other than the negative integers.<ref name=borwein-corless>Template:Cite journal</ref> One property of the gamma function, distinguishing it from other continuous interpolations of the factorials, is given by the Bohr–Mollerup theorem, which states that the gamma function (offset by one) is the only log-convex function on the positive real numbers that interpolates the factorials and obeys the same functional equation. A related uniqueness theorem of Helmut Wielandt states that the complex gamma function and its scalar multiples are the only holomorphic functions on the positive complex half-plane that obey the functional equation and remain bounded for complex numbers with real part between 1 and 2.<ref>Template:Cite journal</ref>
Other complex functions that interpolate the factorial values include Hadamard's gamma function, which is an entire function over all the complex numbers, including the non-positive integers.<ref>Template:Cite book </ref><ref>Template:Cite journal</ref> In the [[p-adic number|Template:Mvar-adic number]]s, it is not possible to continuously interpolate the factorial function directly, because the factorials of large integers (a dense subset of the Template:Mvar-adics) converge to zero according to Legendre's formula, forcing any continuous function that is close to their values to be zero everywhere. Instead, the [[p-adic gamma function|Template:Mvar-adic gamma function]] provides a continuous interpolation of a modified form of the factorial, omitting the factors in the factorial that are divisible by Template:Mvar.<ref>Template:Harvnb. "7.1: The gamma function Template:Nowrap pp. 366–385.</ref>
The digamma function is the logarithmic derivative of the gamma function. Just as the gamma function provides a continuous interpolation of the factorials, offset by one, the digamma function provides a continuous interpolation of the harmonic numbers, offset by the Euler–Mascheroni constant.<ref>Template:Cite journal</ref>
ComputationEdit
The factorial function is a common feature in scientific calculators.<ref>Template:Cite book</ref> It is also included in scientific programming libraries such as the Python mathematical functions module<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> and the Boost C++ library.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> If efficiency is not a concern, computing factorials is trivial: just successively multiply a variable initialized Template:Nowrap by the integers up Template:Nowrap The simplicity of this computation makes it a common example in the use of different computer programming styles and methods.<ref>Template:Cite book</ref>
The computation of <math>n!</math> can be expressed in pseudocode using iteration<ref>Template:Cite book</ref> as
define factorial(n): f := 1 for i := 1, 2, 3, ..., n: f := f * i return f
or using recursion<ref>Template:Cite book</ref> based on its recurrence relation as
define factorial(n): if (n = 0) return 1 return n * factorial(n − 1)
Other methods suitable for its computation include memoization,<ref>Template:Cite book</ref> dynamic programming,<ref>Template:Cite book</ref> and functional programming.<ref>Template:Cite book</ref> The computational complexity of these algorithms may be analyzed using the unit-cost random-access machine model of computation, in which each arithmetic operation takes constant time and each number uses a constant amount of storage space. In this model, these methods can compute <math>n!</math> in time Template:Nowrap and the iterative version uses space Template:Nowrap Unless optimized for tail recursion, the recursive version takes linear space to store its call stack.<ref>Template:Cite book See in particular p. 34.</ref> However, this model of computation is only suitable when <math>n</math> is small enough to allow <math>n!</math> to fit into a machine word.<ref>Template:Cite journal</ref> The values 12! and 20! are the largest factorials that can be stored in, respectively, the 32-bit<ref name=fateman/> and 64-bit integers.<ref name=sigplan>Template:Cite journal</ref> Floating point can represent larger factorials, but approximately rather than exactly, and will still overflow for factorials larger than Template:Nowrap
The exact computation of larger factorials involves arbitrary-precision arithmetic, because of fast growth and integer overflow. Time of computation can be analyzed as a function of the number of digits or bits in the result.<ref name=sigplan/> By Stirling's formula, <math>n!</math> has <math>b = O(n\log n)</math> bits.<ref name=borwein/> The Schönhage–Strassen algorithm can produce a Template:Nowrap product in time Template:Nowrap and faster multiplication algorithms taking time <math>O(b\log b)</math> are known.<ref>Template:Cite journal</ref> However, computing the factorial involves repeated products, rather than a single multiplication, so these time bounds do not apply directly. In this setting, computing <math>n!</math> by multiplying the numbers from 1 Template:Nowrap in sequence is inefficient, because it involves <math>n</math> multiplications, a constant fraction of which take time <math>O(n\log^2 n)</math> each, giving total time Template:Nowrap A better approach is to perform the multiplications as a divide-and-conquer algorithm that multiplies a sequence of <math>i</math> numbers by splitting it into two subsequences of <math>i/2</math> numbers, multiplies each subsequence, and combines the results with one last multiplication. This approach to the factorial takes total time Template:Nowrap one logarithm comes from the number of bits in the factorial, a second comes from the multiplication algorithm, and a third comes from the divide and conquer.<ref>Template:Cite book See also "34.1.5: Performance", pp. 655–656.</ref>
Even better efficiency is obtained by computing Template:Math from its prime factorization, based on the principle that exponentiation by squaring is faster than expanding an exponent into a product.<ref name=borwein>Template:Cite journal</ref><ref name=schonhage>Template:Cite book</ref> An algorithm for this by Arnold Schönhage begins by finding the list of the primes up Template:Nowrap for instance using the sieve of Eratosthenes, and uses Legendre's formula to compute the exponent for each prime. Then it computes the product of the prime powers with these exponents, using a recursive algorithm, as follows:
- Use divide and conquer to compute the product of the primes whose exponents are odd
- Divide all of the exponents by two (rounding down to an integer), recursively compute the product of the prime powers with these smaller exponents, and square the result
- Multiply together the results of the two previous steps
The product of all primes up to <math>n</math> is an <math>O(n)</math>-bit number, by the prime number theorem, so the time for the first step is <math>O(n\log^2 n)</math>, with one logarithm coming from the divide and conquer and another coming from the multiplication algorithm. In the recursive calls to the algorithm, the prime number theorem can again be invoked to prove that the numbers of bits in the corresponding products decrease by a constant factor at each level of recursion, so the total time for these steps at all levels of recursion adds in a geometric series Template:Nowrap The time for the squaring in the second step and the multiplication in the third step are again Template:Nowrap because each is a single multiplication of a number with <math>O(n\log n)</math> bits. Again, at each level of recursion the numbers involved have a constant fraction as many bits (because otherwise repeatedly squaring them would produce too large a final result) so again the amounts of time for these steps in the recursive calls add in a geometric series Template:Nowrap Consequentially, the whole algorithm takes Template:Nowrap proportional to a single multiplication with the same number of bits in its result.<ref name=schonhage/>
Related sequences and functionsEdit
{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} Several other integer sequences are similar to or related to the factorials:
- Alternating factorial
- The alternating factorial is the absolute value of the alternating sum of the first <math>n</math> factorials, Template:Nowrap These have mainly been studied in connection with their primality; only finitely many of them can be prime, but a complete list of primes of this form is not known.<ref>Template:Harvnb. "B43: Alternating sums of factorials". pp. 152–153.</ref>
- Bhargava factorial
- The Bhargava factorials are a family of integer sequences defined by Manjul Bhargava with similar number-theoretic properties to the factorials, including the factorials themselves as a special case.<ref name=bhargava/>
- Double factorial
- The product of all the odd integers up to some odd positive Template:Nowrap is called the double factorial Template:Nowrap and denoted by Template:Nowrap That is, <math display=block>(2k-1)!! = \prod_{i=1}^k (2i-1) = \frac{(2k)!}{2^k k!}.</math> For example, Template:Nowrap. Double factorials are used in trigonometric integrals,<ref>Template:Cite journal</ref> in expressions for the gamma function at half-integers and the volumes of hyperspheres,<ref>Template:Cite journal.</ref> and in counting binary trees and perfect matchings.<ref name="callan"/><ref>Template:Cite journal.</ref>
- Exponential factorial
- Just as triangular numbers sum the numbers from <math>1</math> Template:Nowrap and factorials take their product, the exponential factorial exponentiates. The exponential factorial is defined recursively Template:Nowrap</math>.}} For example, the exponential factorial of 4 is <math display=block>4^{3^{2^{1}}}=262144.</math> These numbers grow much more quickly than regular factorials.<ref>Template:Cite journal</ref>
- Falling factorial
- The notations <math>(x)_{n}</math> or <math>x^{\underline n}</math> are sometimes used to represent the product of the greatest <math>n</math> integers counting up to and Template:Nowrap equal to Template:Nowrap This is also known as a falling factorial or backward factorial, and the <math>(x)_{n}</math> notation is a Pochhammer symbol.Template:Sfn Falling factorials count the number of different sequences of <math>n</math> distinct items that can be drawn from a universe of <math>x</math> items.<ref>Template:Cite book</ref> They occur as coefficients in the higher derivatives of polynomials,<ref>Template:Cite book</ref> and in the factorial moments of random variables.<ref>Template:Cite book</ref>
- Hyperfactorials
- The hyperfactorial of <math>n</math> is the product <math>1^1\cdot 2^2\cdots n^n</math>. These numbers form the discriminants of Hermite polynomials.<ref>Template:Cite OEIS</ref> They can be continuously interpolated by the K-function,<ref>Template:Cite journal</ref> and obey analogues to Stirling's formula<ref>Template:Cite journal</ref> and Wilson's theorem.<ref>Template:Cite journal</ref>
- Jordan–Pólya numbers
- The Jordan–Pólya numbers are the products of factorials, allowing repetitions. Every tree has a symmetry group whose number of symmetries is a Jordan–Pólya number, and every Jordan–Pólya number counts the symmetries of some tree.<ref>Template:Cite OEIS</ref>
- Primorial
- The primorial <math>n\#</math> is the product of prime numbers less than or equal Template:Nowrap this construction gives them some similar divisibility properties to factorials,<ref name=caldwell-gallot/> but unlike factorials they are squarefree.<ref>Template:Cite book</ref> As with the factorial primes Template:Nowrap researchers have studied primorial primes Template:Nowrap
- Subfactorial
- The subfactorial yields the number of derangements of a set of <math>n</math> objects. It is sometimes denoted <math>!n</math>, and equals the closest integer Template:Nowrap
- Superfactorial
- The superfactorial of <math>n</math> is the product of the first <math>n</math> factorials. The superfactorials are continuously interpolated by the Barnes G-function.<ref>Template:Cite journal</ref>
ReferencesEdit
External linksEdit
Template:Portal Template:Sister project
- Template:OEIS el
- Template:Springer
- {{#invoke:Template wrapper|{{#if:|list|wrap}}|_template=cite web
|_exclude=urlname, _debug, id |url = https://mathworld.wolfram.com/{{#if:Factorial%7CFactorial.html}} |title = Factorial |author = Weisstein, Eric W. |website = MathWorld |access-date = |ref = Template:SfnRef }}
Template:Calculus topics Template:Series (mathematics) Template:Authority control