Inicial > Destaques > Algoritmo do CPF – O que está por trás do gerador de CPF

Algoritmo do CPF – O que está por trás do gerador de CPF

Os nove primeiros dígitos de um CPF podem ser quaisquer números, mas os dois últimos seguem uma lógica matemática que explicaremos abaixo.

Quando digitamos o nosso CPF em um sistema bancário ou outro, o sistema utiliza um algoritmo que realiza cálculos com essa lógica matemática para verificar se o CPF é válido ou não.

É por isso que, ao digitar um CPF incorreto em algum sistema ou máquina, é informado que o CPF é inválido. Além disso, quando você digita seu CPF, os sistemas automaticamente identificam você, pois esse é um número único para cada cidadão.

Para exemplificar o processo vamos gerar um CPF válido, calculando os dígitos verificadores de um número hipotético: 111.444.777-XX.

Calculando o Primeiro Dígito Verificador do CPF

O primeiro dígito verificador do CPF é calculado utilizando-se o seguinte algoritmo.

1) Distribua os 9 primeiros dígitos em um quadro colocando os pesos 10, 9, 8, 7, 6, 5, 4, 3, 2 abaixo da esquerda para a direita, conforme representação abaixo:

1 1 1 4 4 4 7 7 7
10 9 8 7 6 5 4 3 2

2) Multiplique os valores de cada coluna:

1 1 1 4 4 4 7 7 7
10 9 8 7 6 5 4 3 2
10 9 8 28 24 20 28 21 14

3) Calcule o somatório dos resultados (10+9+… +21+14) = 162

4) O resultado obtido (162) será divido por 11. Considere apenas o quociente como valor inteiro, e o resto da divisão será usado para calcular o primeiro dígito verificador.

No exemplo, 162 dividido por 11 resulta em um quociente de 14 e um resto de 8. Se o resto da divisão for menor que 2, o primeiro dígito verificador será 0 (zero). Caso contrário, subtraia o valor obtido de 11. No exemplo, 11 – 8 é igual a 3 (três), que é o primeiro dígito verificador.

Assim, já temos parte do CPF, que é 111.444.777-3X.

Calculando o segundo Dígito Verificador do CPF

1) Para calcular o segundo dígito verificador do CPF, usamos o primeiro dígito já calculado e montamos uma tabela com os valores 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 já que estamos incorporando mais um algarismo para esse cálculo. Veja:

1 1 1 4 4 4 7 7 7 3
11 10 9 8 7 6 5 4 3 2

2) Na próxima etapa faremos como na situação do cálculo do primeiro dígito verificador, multiplicaremos os valores de cada coluna e efetuaremos o somatório dos resultados obtidos: (11+10+… +21+6) = 204.

1 1 1 4 4 4 7 7 7 3
11 10 9 8 7 6 5 4 3 2
11 10 9 32 28 24 35 28 21 6

3) Realizamos novamente o cálculo do módulo 11. Dividimos o total do somatório por 11 e consideramos o resto da divisão.

Vamos acompanhar: 204 dividido por 11 obtemos 18 como quociente e 6 como resto da divisão.

4) Se o valor do resto da divisão for menor que 2, ele será automaticamente convertido em zero. Caso contrário, como é o nosso caso, é necessário subtrair o valor obtido de 11 para encontrar o dígito verificador. Nesse exemplo, o resto da divisão foi 6, então subtraindo de 11, encontramos o valor 5 (11-6=5), que é o nosso segundo dígito verificador.

Podemos concluir que chegamos ao fim dos cálculos e descobrimos que os dígitos verificadores do CPF hipotético são 3 e 5, o que significa que o CPF completo seria 111.444.777-35.

Notei que o CPF de várias pessoas nascidas na Bahia, ao ignorar os dígitos verificadores, terminam com o número 5. Descobri que isso não é uma coincidência, pois existe uma tabela que determina o último dígito do CPF conforme o estado. Segue a tabela abaixo:

Tabela de identificação de CPF conforme o Estado

Dígito Estado(s)
0 Rio Grande do Sul
1 Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul e Tocantins
2 Amazonas, Pará, Roraima, Amapá, Acre e Rondônia
3 Ceará, Maranhão e Piauí
4 Paraíba, Pernambuco, Alagoas e Rio Grande do Norte
5 Bahia e Sergipe
6 Minas Gerais
7 Rio de Janeiro e Espírito Santo
8 São Paulo
9 Paraná e Santa Catarina

Para saber de onde é um CPF, basta ignorar os dois dígitos verificadores e observar o último algarismo da “parte inteira”. A tabela acima dirá de onde ele é.

Por exemplo: se existisse, o CPF 629353495-31 seria da Bahia ou de Sergipe, porque 5 é o último algarismo antes dos dígitos verificadores e nesse identifica esses dois Estados.

Agora que tal criar um programa em C, PHP, Java ou Visual Basic, de validação ou geração de CPF conforme o estado? Você também pode fazer em Excel.

  1. Michael Silva
    13/09/2023 às 11:54

    Ótimo artigo, existem geradores online que podem ajudar com a prova real [gerador online de cpf](https://gerador-online.com/gerador-de-cpf/)

  1. No trackbacks yet.

Deixe seu comentário