Table of Contents

Fatorial

O fatorial é uma operação matemática, denotada pelo símbolo $\large !$ que consiste no produto de todos os números inteiros positivos, a partir do número não negativo dado, até o número 1.



Ele é usado para calcular o número de maneiras diferentes de organizar um conjunto de objetos ou realizar uma determinada tarefa, sendo uma operação fundamental em muitas áreas da matemática, como combinações, permutações, probabilidade, séries e análise combinatória.


Exemplo
Dessa forma, se você deseja saber quantas maneiras diferentes 5 pessoas podem se sentar em uma fila, basta calcular o fatorial de 5.

$$\large 5! = 5 \cdot 4 \cdot 3 \cdot 2 \cdot 1 = 120$$


Importante

$$\large O\ fatorial\ de\ 0\ é\ 1,\ ou\ seja,\ 0! = 1$$


 Python:

def prod(lista):
    res = lista[0]
    for num in lista[1:]:
        res *= num
    return res

# numeroFatorial é o fatorial buscado, por exemplo 5!
lista_reversa = list(reversed([x for x in range(1, numeroFatorial + 1)]))
produto = prod(lista_reversa)
print(produto)

' Com o uso da biblioteca functools '
from functools import reduce

# numeroFatorial é o fatorial buscado, por exemplo 5!
lista_reversa = list(reversed([x for x in range(1, numeroFatorial + 1)]))

produto = reduce(lambda x, y: x * y, lista, 1)

print(produto)

Julia:

# numeroFatorial é o fatorial buscado, por exemplo 5!
produto = factorial(numeroFatorial)
println(produto)

# numeroFatorial é o fatorial buscado, por exemplo 5!
produto = prod(reverse(1:numeroFatorial))
println(produto)

Libs:

Linguagem Biblioteca Função
Python Numpy np.math.factorial(x)
Math mt.factorial(x)
Mpmath mt.factorial(x)
Sympy sy.factorial(x)
Scipy.special sc.factorial(x)


Quando usar o fatorial:

  • Quando precisar calcular todas as permutações (arranjos) possíveis de $\large n$ objetos.
  • Quando estiver resolvendo problemas de combinatória envolvendo escolhas, subconjuntos ou organização.
  • Quando trabalhar com problemas que usam as fórmulas de permutações $(P(n,r))$, combinações $(C(n,r))$ ou ajustes para repetições.


Fatorial Duplo

Já o fatorial duplo é uma operação matemática, denotada pelo símbolo $\large !!$ que consiste no produto dos números inteiros positivos pares (se o número dado for par, até o menor número par, o 2), e ímpares (se o número dado for ímpar, até 1).

É utilizado principalmente em anáilise combinatória para contar o número de maneiras de particionar um conjunto em subconjuntos não vazios. O fatorial duplo pode ser utilizado em algumas áreas da física e da estatística, como na mecânica estatística e na teoria das probabilidades.


Exemplos

$$\large 4!! = 4 \cdot 2 = 8$$

$$\large 5!! = 5 \cdot 3 \cdot 1 = 15$$

Importante

$$O\ fatorial\ duplo\ de\ 0\ é\ definido\ como\ 1,\ ou\ seja,\ 0!! = 1$$

$$O\ fatorial\ duplo\ de\ 1\ é\ simplesmente\ 1,\ ou\ seja,\ 1!! = 1$$


Python:

# Definindo qual número (1 ou 2) será somado à lista de numeros
def par_ou_impar(num):
    if num % 2 == 0:
        adicional = 2
    else:
        adicional = 1
    return adicional

# Descobrindo o produto dos elementos
def prod(lista):
    res = lista[0]
    for num in lista[1:]:
        res *= num
    return res

num = 5
lista = list(map(lambda x: x + par_ou_impar(num), reversed(list(range(0, num, 2)))))
print(prod(lista))

Julia:

prod(x:-2:1)

Libs:

Linguagem Biblioteca Função
Python scipy.special factorial2(x)