O critério de divisibilidade por 9 e por que ele funciona
A regra é simples: some os dígitos de um número. Se a soma for divisível por 9, o número original também é. Funciona para qualquer número inteiro positivo, não importa quantos dígitos tenha. Um número como 456.783, por exemplo. Você soma 4 mais 5 mais 6 mais 7 mais 8 mais 3, que dá 33. 33 não é divisível por 9, então 456.783 também não é. Pronto. O motivo pelo qual isso funciona tem a ver com a base 10 do nosso sistema numérico. Como 10 deixa resto 1 quando dividido por 9, qualquer potência de 10 também deixa resto 1. Isso significa que cada dígito em uma posição específica contribui exatamente com seu próprio valor para o resto da divisão por 9. A soma dos dígitos preserva esse resto. É por isso que o procedimento é matematicamente equivalente à divisão original.
Como testar números divisíveis por 9 na prática
Na hora do teste, você pode aplicar a regra recursivamente se quiser. Pega a soma dos dígitos, e se o resultado ainda for grande, some de novo. Com 987.654, a primeira soma dá 39. Soma 3 mais 9 e chega a 12. 12 não é divisível por 9, então o número original também não. Esse processo de reduzir até um dígito único é chamado de raíz digital, e ele sempre resulta em 9 para múltiplos de 9, ou em 0 se o número for 0. O que muita gente não percebe é que a raíz digital de um número é exatamente o resto da divisão por 9, exceto quando o resto é 0 e a raíz digital é 9. Isso acontece porque estamos trabalhando com um sistema que vai de 1 a 9 na redução, não de 0 a 8. Se você está programando isso e faz um módulo 9, precisa tratar o caso em que o resto é zero como sinônimo de raíz digital igual a 9.
Eu já levei um susto desse tipo numa validação de checksum de documentos fiscais. O sistema recebia números grandes e eu testava divisibilidade por 9 usando módulo. Um número tinha raíz digital 9, mas o módulo devolvia 0. O código considerava o número como "não divisível" quando na verdade ele era perfeitamente múltiplo de 9. A correção foi trivial, mas levou duas horas pra encontrar o bug porque o log só registrava falhas nos casos em que o número deveria passar no teste. O que acontecia era o oposto: o número passava no módulo mas falhava na lógica de negócios.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Limitações e casos onde a regra não ajuda
O critério diz se um número é ou não divisível por 9. Ele não te dá o quociente. Se você precisa saber quanto sobra quando divide por 9, a raíz digital menos 1 (ou 0 se a raíz for 9) te dá o resto, mas aí já é outra conta. Também não funciona como atalho para divisibilidade por outros números. Divisível por 9 não significa nada sobre divisibilidade por 3, embora o contrário seja verdade: todo número divisível por 9 é automaticamente divisível por 3. Em termos de velocidade, usar a soma dos dígitos é muito mais rápido do que fazer a divisão longa, principalmente para números com dezenas de dígitos. Num teste simples com números de até 20 dígitos, a soma dos dígitos leva menos de um milissegundo por verificação. A divisão direta leva cerca de três a cinco milissegundos. Não parece muito, mas quando você valida milhares de registros, a diferença aparece.
Se o seu objetivo é apenas verificar múltiplos de 9 em um intervalo grande, genere os múltiplos diretamente em vez de testar cada número. Parta do primeiro múltiplo de 9 no intervalo e avance de 9 em 9. Isso elimina completamente a necessidade de qualquer teste de divisibilidade e reduz o trabalho para uma única operação de adição por iteração.
Erros comuns que eu vejo todo dia
Um erro frequente é confundir a regra com a de divisibilidade por 3. A regra é idêntica, só que para 9 a soma precisa ser divisível por 9, não apenas por 3. Um número como 12 tem soma dos dígitos igual a 3. É divisível por 3, mas não por 9. Outro erro é somar errado. Parece bobo, mas em planilhas com centenas de linhas as somas manuais costumam errar, e aí o teste perde o sentido. Também tem gente que tenta aplicar a regra de forma mecânica sem entender o que está fazendo e acaba aplicando em números decimais. A regra vale para inteiros. Se o número tem vírgula ou ponto decimal, trate a parte inteira primeiro. O resto da divisão por 9 não tem relação com a parte fracionária de forma alguma.
Se você precisa de uma lista pronta de números divisíveis por 9 num determinado intervalo, basta gerar usando step 9 a partir de 9. Não existe uma fórmula mágica que te dê o enésimo múltiplo sem fazer essa geração, então aceitar o looping simples é a opção mais eficiente na maioria dos casos reais.