O CNPJ (Cadastro Nacional da Pessoa Jurídica) é um número único composto por quatorze algarismos que identifica uma pessoa jurídica junto à Receita Federal brasileira (órgão do Ministério da Fazenda), necessário para que a pessoa jurídica tenha capacidade de fazer contratos e processar ou ser processada.

O CNPJ é validado da mesma forma que o CPF, tendo a única diferença nos vetores padrões. São os dois últimos dígitos que validam todos os 12 algarismos anteriores.

Para o algoritmo abaixo usaremos como exemplo o seguinte CNPJ: 44.038.188/0001-32.

 

Algoritmo para Geração de CNPJ:

 

  • Cálculo do primeiro dígito verificador:

Tomamos um vetor  a E R^12 cujos componentes são os 12 primeiros dígitos que compõem o número do CNPJ. Para o CNPJ que será utilizado neste exemplo (44.038.188/0001-32) teremos o seguinte vetor:

 a = (4, 4, 0, 3, 8, 1, 8, 8, 0, 0, 0, 1)

Determinamos o produto escalar desse vetor com o vetor padrão:

 b = (5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2)

OBS: O vetor padrão, como o próprio nome diz, será sempre o mesmo quando for calculado o digito verificador.

 a.b = a = (4, 4, 0, 3, 8, 1, 8, 8, 0, 0, 0, 1) . b = (5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2) = 20 + 16 + 0 + 6 + 72 + 8 + 56 + 48 + 0 + 0 + 0 + 2 = 228

Agora tomamos o resto da divisão do produto escalar por 11, ou seja, 228 dividido por 11 teremos resto inteiro igual à 8. O primeiro dígito verificador é dado pela subtração  11 - resto e teremos como resultado o número 3.

 

  • Cálculo do segundo dígito verificador:

Tomamos um vetor  c E R^13 cujos componentes são os 12 primeiros dígitos que compõem o número do CNPJ mais o primeiro dígito verificador 3, calculado anteriormente:

 c = (4, 4, 0, 3, 8, 1, 8, 8, 0, 0, 0, 1, 3)

Determinamos o produto escalar desse vetor com o vetor padrão:

 d = (6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2)

OBS: No segundo vetor padrão deve-se adicionar o número 6 no primeiro componente do vetor.

 c.d = (4, 4, 0, 3, 8, 1, 8, 8, 0, 0, 0, 1, 3) . (6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2) = 24 + 20 + 0 + 9 + 16 + 9 + 64 + 56 + 0 + 0 + 0 + 3 + 6 = 207

Agora tomamos o resto da divisão do produto escalar por 11, ou seja, 207 dividido por 11 teremos resto inteiro igual à 9. O segundo dígito verificador é dado pela subtração  11 - resto e teremos como resultado o número 2.

Completando nosso CNPJ 44.038.188/0001-xx com os dois dígitos verificadores calculados teremos 44.038.188/0001-32.

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  a E R^9 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:

 a = (3, 1, 3, 4, 0, 2, 8, 0, 9)

Determinamos o produto escalar desse vetor com o vetor (padrão)

 b = (10, 9, 8, 7, 6, 5, 4, 3, 2)

isto é,

 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

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 é  11 - 8 = 3 .

 

  • Cálculo do segundo dígito verificador:

Tomamos um vetor  c E R^10 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:

 c = (3, 1, 3, 4, 0, 2, 8, 0, 9, 3)

Determinamos o produto escalar desse vetor com o vetor (padrão)

 d = (11, 10, 9, 8, 7, 6, 5, 4, 3, 2) ,

isto é,

 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

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.