Composição de números naturais funciona assim
Você tem o número 5 na mão e quer saber todas as formas de escrevê-lo como soma de inteiros positivos. A ordem dos termos importa. Então 3 + 2 é diferente de 2 + 3, mesmo somando o mesmo total. Isso é composição de numeros naturais, e a diferença entre composição e partição é o primeiro lugar onde as pessoas erram. Existem 2^(n-1) composições para o número n. Para 4, são 8. Para 6, são 32. A fórmula é simples, mas a aplicação prática exige cuidado com definição. Se você usar o conceito errado em um problema de enumerção ou contagem, o resultado final simplesmente não bate.
O método prático: enumerate e verifique
A maneira mais direta de resolver é construir as composições a partir do total. Para n = 5, comece listando uma parte só: 5. Depois duas partes: 1+4, 2+3, 3+2, 4+1. Depois três partes: 1+1+3, 1+2+2, 1+3+1, 2+1+2, 2+2+1, 3+1+1. Continue até o caso de cinco 1s. O número total de composições sempre será 2^(n-1). Em problemas reais, você raramente vai enumerar tudo manualmente. O mais comum é precisar contar composições com restrições. Por exemplo: quantas composições de 10 têm exatamente 4 partes? A resposta vem da combinação com repetição, também chamada de combinação com partes iguais, que segue a fórmula C(n-1, k-1), onde n é o número total e k é o número de partes. Para n = 10 e k = 4, C(9, 3) = 84 composições.
Outro caso frequente é quando todos os termos devem ser distintos. Aí a contagem muda completamente. Para n = 8 com partes distintas, as composições possíveis são muito mais poucas do que para o caso geral, porque a restrição de não repetir números corta várias opções que no caso livre seriam válidas.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Um problema real que vi acontecer
Numa aula de combinatória, um estudante pediu para resolver uma questão em que o enunciado pedia composições de 12 com partes pares. Ele tentou aplicar a fórmula padrão 2^(11) e chegou a 2048. O gabarito marcava 64 como resposta correta. O erro estava na restrição implícita: ao exigir partes pares, a estrutura muda. Substituir cada parte par por 2k transforma o problema em uma partição de 6, e o número de composições passa a ser 2^(6-1) = 32. Como cada parte original era o dobro, ele duplicou a contagem e confundiu a restrição. Eu uso hoje um procedimento fixo para evitar esse tipo de confusão. Primeiro, identifico claramente quais restrições estão no enunciado. Depois, transformo o problema num equivalente mais simples se possível. No caso das partes pares, a substituição 2k sempre reduz o problema a uma composição com parte menor, mas em outras situações a redução não é tão limpa. Existem problemas em que a restrição não gera uma transformação bijetiva simples, e aí a única saída é contar explicitamente ou montar uma função geradora.
Limitações e onde o método falha
A fórmula 2^(n-1) funciona bem para valores pequenos. Para n = 20, já temos 524.288 composições. Enumerar manualmente é inviável. Em computação, gerar todas as composições de n consome memória proporcional a 2^(n-1), o que vira um gargalo rápido. Se o objetivo é apenas contar composições sob alguma restrição, vale usar funções geradoras ou programação dinâmica em vez de gerar a lista inteira. Outro ponto importante: composição de números naturais não é a mesma coisa que partição. Partições ignoram a ordem dos termos e, dependendo do contexto, podem exigir partes estritamente positivas ou permitir zero. Se o seu problema pede parte distinta ou tamanho fixo de partes, a contagem muda drasticamente. Trocar esses conceitos gera erros sistemáticos em exercícios de enumerção e em aplicações de probabilidade discretas.
Se você precisa de uma ferramenta prática para gerar composições ou contar composições com restrições específicas, um script simples em Python resolve na maior parte dos casos. Um gerador recursivo com filtros para partes pares, partes distintas ou tamanho fixo de parte roda em milissegundos para n até 15. Acima disso, comece a olhar para abordagens baseadas em funções geradoras ou DP para evitar explosão combinatorial. O que mais causa confusão na prática é a ambiguidade em enunciados. Muitos livros tratam composição como sinônimo de partição, o que é incorreto. Sempre confirme se a ordem importa antes de aplicar qualquer fórmula. Se o problema menciona "ordem não importa", trata-se de partição. Se menciona "ordem importa", trata-se de composição. Essa distinção dita o caminho inteiro da resolução.