No Brasil, cada pessoa física possui um único e definitivo número de inscrição no CPF (Cadastro de Pessoas Físicas), que o identifica perante a secretaria da Receita Federal. Tal número de inscrição é constituído de 9 dígitos, agrupados de 3 em 3. Por exemplo, 313.402.809-30.
O CPF é validado através dos dígitos verificadores, são eles os 2 últimos os digitos do CPF, ou seja, a partir dos 2 últimos digitos do CPF se sabe se os 9 algarismos anteriores são válidos.
Algoritmo para Geração de CPF:
- Cálculo do primeiro dígito verificador:
Tomamos um vetor [latex] a E R^9 [/latex] cujos componentes são os dígitos que compõem o número do CPF na ordem dada. Para o CPF citado como exemplo no inicio deste artigo, 313.402.809-30, temos o vetor:
[latex] a = (3, 1, 3, 4, 0, 2, 8, 0, 9) [/latex]
Determinamos o produto escalar desse vetor com o vetor (padrão)
[latex] b = (10, 9, 8, 7, 6, 5, 4, 3, 2) [/latex]
isto é,
[latex] a . b = (3, 1, 3, 4, 0, 2, 8, 0, 9) . (10, 9, 8, 7, 6, 5, 4, 3, 2) = 30 + 9 + 24 + 28 + 0 + 10 + 32 + 0 + 18 = 151 [/latex]
A seguir tomamos o resto da divisão inteira desse produto escalar por 11. Se o resto desta divisão inteira é 0 ou 1, então o primeiro dígito verificador é 0. Caso o contrário (resto entre 2 e 10), o primeiro dígito verificador é dado por 11 – resto.
Para o exemplo em questão, a divisão inteira de 151 por 11 resulta em quociente 13 e resto 8. Sendo assim, o primeiro dígito verificador é [latex] 11 – 8 = 3 [/latex].
- Cálculo do segundo dígito verificador:
Tomamos um vetor [latex] c E R^10 [/latex] cujos nove primeiro componentes são os dígitos que compõem o número do CPF na ordem dada, e o último componente é o primeiro dígito verificador encontrado. Para o exemplo em questão temos:
[latex] c = (3, 1, 3, 4, 0, 2, 8, 0, 9, 3) [/latex]
Determinamos o produto escalar desse vetor com o vetor (padrão)
[latex] d = (11, 10, 9, 8, 7, 6, 5, 4, 3, 2) [/latex],
isto é,
[latex] c . d = (3, 1, 3, 4, 0, 2, 8, 0, 9, 3) . (11, 10, 9, 8, 7, 6, 5, 4, 3, 2) = 33 + 10 + 27 + 32 + 0 + 12 + 40 + 0 + 27 + 6 = 187 [/latex]
A seguir tomamos o resto da divisão inteira desse produto escalar por 11. Se o resto desta divisão inteira é 0 ou 1, então o segundo dígito verificador é 0. Caso o contrário (resto entre 2 e 10), o segundo dígito verificador é dado por 11 – resto.
Para o exemplo em questão, a divisão inteira de 187 por 11 resulta em quociente 17 e resto 0. Sendo assim, o segundo dígito verificador é 0.
Bibliografia: Geometria Analítica – Fabiano José dos Santos e Silvimar Fábio Ferreira.
Ótimo artigo, existem geradores online que podem ajudar a validar se o cálculo esta certo ou não – [gerador online de cpf](https://gerador-online.com/gerador-de-cpf/)