Algoritmo de um gerador de CPF
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
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 como quociente apenas o valor inteiro, o resto da divisão será responsável pelo cálculo do primeiro dÃgito verificador.
Vamos acompanhar: 162 dividido por 11 obtemos 14 como quociente e 8 como resto da divisão. Caso o resto da divisão seja menor que 2, o nosso primeiro dÃgito verificador se torna 0 (zero), caso contrário subtrai-se o valor obtido de 11, que é nosso caso. Sendo assim nosso dÃgito verificador é 11-8, ou seja, 3 (três). Já temos portanto parte do CPF, confira: 111.444.777-3X.
Calculando o Segundo DÃgito Verificador
1) Para o cálculo do segundo dÃgito será usado o primeiro dÃgito verificador já calculado. Montaremos uma tabela semelhante a anterior só que desta vez usaremos na segunda linha 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) Caso o valor do resto da divisão seja menor que 2, esse valor passa automaticamente a ser zero, caso contrário (como no nosso caso) é necessário subtrair o valor obtido de 11 para se obter o dÃgito verificador. Logo, 11-6= 5, que é o nosso segundo dÃgito verificador.
Neste caso chegamos ao final dos cálculos e descobrimos que os dÃgitos verificadores do nosso CPF hipotético são os números 3 e 5, portanto o CPF ficaria assim: 111.444.777-35.
O gerador de CPF apresentado neste site funciona com base neste algoritmo. A rotina de gerar CPF ‘s válidos, inicialmente sorteia 9 números. Calcula-se o 1o dÃgito verificador e integra-se o mesmo aos 9 números iniciais. Prossegue-se com o cálculo do segundo dÃgito verificador como ensinado. Ao final, o criador de CPF emite um número de CPF válido.
Esta explicação pertence ao site Gerador de CPF, onde por ele mesmo você pode gerar CPF para estudo.
Eu vou passar esse algoritmo para a linguagem PHP e posto em seguida aqui no blog. Acredito ser útil para muita gente.
Até a próxima.
rhayane
muito bom…… vc conceguiu ser bem especifico no seu metodo de calcular os dois ultimos digitos do CPF…..
Renan Lima
Obrigado Rhayane, mas não foi eu quem fez este algoritmo, foi o pessoal deste site: http://www.geradorcpf.com
Obrigado pela visita.
[]‘s
Pedro
Muito BOm deu certo no cartola
Fernando
Muito legal, aqui está um site que usa o algoritmo:
http://www.gerardocumentos.com.br
http://www.gerardocumentos.com
Leticia
http://www.gerardocumentos.com.br/?pg=entenda-a-formula-do-cpf
Olá Renan Tambem tenho um site sobre gerar cpf cnpj e etc =D
Thiago de Oliveira
Olá pessoal !
Uma dica pra quem trabalha com cake.
Eu uso um plugin excelente para várias aplicabilidades
validação de cpf,cep,cnpj,calcolo de entrega de correios,telefones entre outro tudo bem mastigado, so não trabalha com RG que possui um logaritmo parecido com o do CPF, é só conferir.
http://github.com/jrbasso/cake_ptbr