factorialk#
- scipy.special.factorialk(n, k, exact=None)[source]#
 Multifactorial of n of order k, n(!!…!).
This is the multifactorial of n skipping k values. For example,
factorialk(17, 4) = 17!!!! = 17 * 13 * 9 * 5 * 1
In particular, for any integer
n, we havefactorialk(n, 1) = factorial(n)
factorialk(n, 2) = factorial2(n)
- Parameters:
 - nint or array_like
 Calculate multifactorial. If
n < 0, the return value is 0.- kint
 Order of multifactorial.
- exactbool, optional
 If exact is set to True, calculate the answer exactly using integer arithmetic, otherwise use an approximation (faster, but yields floats instead of integers)
Warning
The default value for
exactwill be changed toFalsein SciPy 1.15.0.
- Returns:
 - valint
 Multifactorial of n.
Notes
While less straight-forward than for the double-factorial, it’s possible to calculate a general approximation formula of n!(k) by studying
nfor a given remainderr < k(thusn = m * k + r, resp.r = n % k), which can be put together into something valid for all integer valuesn >= 0&k > 0:n!(k) = k ** ((n - r)/k) * gamma(n/k + 1) / gamma(r/k + 1) * max(r, 1)
This is the basis of the approximation when
exact=False. Compare also [1].References
[1]Complex extension to multifactorial https://en.wikipedia.org/wiki/Double_factorial#Alternative_extension_of_the_multifactorial
Examples
>>> from scipy.special import factorialk >>> factorialk(5, k=1, exact=True) 120 >>> factorialk(5, k=3, exact=True) 10 >>> factorialk([5, 7, 9], k=3, exact=True) array([ 10, 28, 162]) >>> factorialk([5, 7, 9], k=3, exact=False) array([ 10., 28., 162.])