Divisibilidade por 3: o que funciona na prática
A regra do soma dos dígitos é o padrão que todo mundo aprende no ensino fundamental, mas mesmo assim vejo gente errando. O método é simples: some todos os dígitos de um número e verifique se o resultado é divisível por 3. Se for, o número original também é. Se não for, o número original não é divisível por 3. Por exemplo, o número 12345 tem a soma dos dígitos igual a 15. Como 15 é divisível por 3 (15 ÷ 3 = 5), então 12345 também é divisível por 3. Deu pra entender? Vamos ao ponto que interessa.
👉 Clique no botão abaixo para saber mais sobre o assunto!
16 é divisível por 3
Não. Some os dígitos de 16: 1 + 6 = 7. O número 7 não é divisível por 3, então 16 não é divisível por 3. A divisão resulta em 5 com resto 1, ou aproximadamente 5,333 se você quiser o valor decimal. Isso pode parecer óbvio, mas em processamento batch eu já vi sistemos inteiros travarem porque alguém assumiu que um campo numérico era divisível por um valor e não verificou o resto. Certa vez eu estava processando uma carga de dados onde precisava agrupar registros em lotes de 3. O total de linhas era 16, o que significa que sobrava 1 registro sem grupo. Não havia gambiarra elegante que resolvesse isso sem deixar algo para trás. Eu simplesmente criei um grupo com 1 registro só e pronto. Parece besteira, mas em sistemas de produção essa situação aparece com frequência e ninguém gosta de lidar com o caso de borda.
O erro mais comum que eu vejo é as pessoas tentarem decorar múltiplos de 3 em vez de aplicar a regra da soma dos dígitos. Em números pequenos isso funciona, mas a partir de 4 dígitos a memória já falha. Outro problema é a confusão entre divisibilidade por 3 e por 9. A regra é a mesma, mas o número somado precisa ser divisível por 9 especificamente. Todo número divisível por 9 é divisível por 3, mas o inverso não vale. Se você está validando dados em lote e usa uma expressão regular para filtrar múltiplos, saiba que testar "soma dos dígitos % 9 == 0" vai excluir muitos números que são perfeitamente válidos quando o critério é apenas divisibilidade por 3. Se você precisa verificar isso automaticamente, a implementação mais confiável é usar o operador módulo direto: número % 3 == 0. Nenhuma soma de dígitos, nenhuma conversão para string. É mais rápido e menos propenso a erro, especialmente em pipelines que rodam milhões de linhas. O overhead de converter um inteiro para string e somar cada dígito individualmente pode adicionar segundos a mais em processamentos grandes, e muitas vezes esse custo é desnecessário.