Algoritmo do CPF

A fórmula para criar um CPF

Quem trabalha com desenvolvimento de sistemas, não raramente se depara com a necessidade de obter números de CPFs válidos para fazer testes de software. Diante desse cenário, no entanto, muitos equivocadamente deixam de recorrer a um bom algoritmo do CPF.

Fórmula do CPF consoante à validação – Primeiro dígito

algoritmo do cpf

Antes de qualquer coisa, devemos notar que o cálculo para validação de um número de CPF é determinado pelo próprio Ministério da Fazenda. O órgão é o responsável pelos cadastros de pessoas jurídicas.

Dito isso, devemos notar que um documento como o CPF é composto por 11 números, considerando dígitos. Estes números obedecem a já mencionada máscara “###.###.###-##”, todavia, para que se chegue à validade do mesmo a verificação utiliza os 9 primeiros números.

Agora, falando do processo em si, podemos dizer que ele é feito por meio de um cálculo simples. Para perfeita compreensão, tomamos emprestado um exemplo onde o CPF fictício tem a seguinte numeração: 529.982.247-25.

Nesse caso, para a validação do primeiro dígito é preciso que se faça uma multiplicação dos 9 primeiros números por meio da sequência decrescente de 10 à 2 e se some os valores resultantes.

O exemplo nesse caso fica assim:

529982247
1098765432

5 * 10 + 2 * 9 + 9 * 8 + 9 * 7 + 8 * 6 + 2 * 5 + 2 * 4 + 4 * 3 + 7 * 2

Em consequência, o resultado é 295.

Segunda etapa da validação do primeiro dígito

Assim como no primeiro exemplo, o segundo passo da fórmula do CPF também é bastante simples. Nesse caso, é preciso que se multiplique o resultado obtido por 10 e na sequência o divida por 11.

O exemplo fica assim:

295 * 10 / 11

Vale notar, no entanto, que o resultado útil para a fórmula nesse caso será o RESTO do que foi dividido. No caso dele ser igual ao primeiro dígito verificador, que é aquele depois do “-“, significa que a primeira parte do processo está certo.

É importante ressaltar, no entanto, que quando o resto do que foi dividido é igual a 10 é preciso considerá-lo como 0.

Voltando para o exemplo com o qual temos trabalhado, temos então os seguintes fatos:

O valor resultante da divisão é “268” e o RESTO é 2.

Na prática isso representa que o número de CPF fictício que citamos no início foi validado no que diz respeito ao seu primeiro dígito.

Validação do segundo dígito

Depois de validado o primeiro dígito, é hora de determinar a validade do segundo. O processo é bastante similar, só que ainda mais simples, pois a fórmula do CPF aqui é trabalhada a partir do primeiro dígito já verificado.

Nesse caso, é preciso considerar os 9 primeiros dígitos junto do primeiro dígito verificador. Depois disso multiplica-se os 10 números pela se sequência decrescente partindo de 11 a 2. No exemplo com o qual trabalhamos a coisa fica assim:

5299822472
111098765432

5 * 11 + 2 * 10 + 9 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 2 * 5 + 4 * 4 + 7 * 3 + 2 * 2

Diante disso, podemos obter o 347 como resultado.

A partir daí, basta levar em consideração o processo da primeira verificação, onde o resultado é multiplicado por 10 e dividido por 11. O exemplo então fica assim:

347 * 10 / 11

Levando em conta o que foi dito anteriormente, é preciso verificar o RESTO. Considerando que o resultado do que foi dividido é 315, o RESTO é 5.

Depois disso é preciso verificar se o resto é correspondente ao segundo dígito verificador. A partir dessa confirmação, então pode-se considerar o CPF como válido, que no caso é o número fictício 529.982.247-25.

Com o objetivo de gerar sempre CPFs válidos, nosso algoritmo do CPF aqui no gerador de CPF trabalha seguindo todas as diretrizes de validação.

É importante ressaltar, porém, que isso não significa que esse seja um CPF de uma pessoa real. O sistema gera apenas um número válido para finalidade de teste de softwares.

Isso acontece porque o caminho mais fácil seria lançar mão apenas de um modelo que atende a máscara “###.###.###-##”, onde ‘#’ representa um dígito.

O fato, porém, é que há uma regra matemática que precisa ser levada em consideração na hora de determinar se o número é válido.

Para ilustrar melhor isso, portanto, apresentamos aqui algumas das informações mais relevantes sobre isso para você  implementar o algoritmo em alguma destas linguagens de programação: