Os Mineiros do Chile e o problema do Fatorial

Publicado em qui 14 outubro 2010 na categoria Cultura Nerd

[aviso]
Este texto trata do fatorial de um número. Se você busca notícias sobre o resgate dos mineiros do Chile, passe para o próximo texto dos seus feeds. Se você não tem um perfil nerd nem gosta de matemática, pule para o próximo texto dos seus feeds. Você foi avisado!

[/aviso]

Introdução

Primeiro de tudo, vejamos a definição do fatorial de um número inteiro e positivo (n!):

"Na matemática, o factorial (português europeu) ou fatorial (português brasileiro) de um número natural n, representado por n!, é o produto de todos os inteiros positivos menores ou iguais a n. A notação n! foi introduzida por Christian Kramp em 1808." (Fonte: Wikipedia)

O fatorial de um número aparece, em matemática básica, nos problemas de contagem (Combinações, arranjos e permutações, entre outros). E é algo que sempre me fascinou...

Por exemplo: De quantas maneiras diferentes, 33 mineiros presos numa mina, podem ser resgatados 1 a 1? De 33! maneiras :-)

Curiosidades no Cálculo do Fatorial

A maior parte das calculadoras científicas só calcula o fatorial até 69! No Google e em algumas calculadoras científicas (a que tem no meu Android (RealCalc), por exemplo) só calculam até 170!


Clique aqui para ver o fatorial de 170! no Google

Se você precisa (quem precisa realmente disto?) calcular um fatorial maior que 170 vá para o potente Wolfram.

Clique aqui para calcular o fatorial de 100000000000000!

Como você pode viver até hoje sem saber o resultados deste fatorial? :-)

[Atualização]

A explicação sobre esta limitação para o cálculo do fatorial, por algumas calculadoras, é dada pelo João Felipe Mitre num comentário aqui no blogue, que tomei a liberdade de colocar aqui o texto:

"Essa limitação dos programas clássicos de computador está associado ao valor máximo da
representação do número real ser da ordem de 10^308.


E sendo 171! maior que 10^309, esse resultado não pode ser facilmente representado em máquinas 32 bits.

Alguns programas ultrapassam o limite teórico (32 ou 64 bits) utilizando-se de operações especiais (que se não me engano, fazem as contas por partes, dando ao problema precisão arbitrária - tempo computacional arbitrário também :-) - não sei de mais detalhes sobre isso, apesar de já ter usado na prática)".

Mais detalhes:

[/atualização]