Algoritmo de CPF
 Uma rotina muito utilizada por programadores em softwares comerciais é a da validação do Cadastro de Pessoa FÃsica (CPF). Muitos pegam estas rotinas prontas na internet, milhares de sites oferecem nas mais diversas linguagens de programação. Aos invés de você confiar seu software a essas rotinas que tal você mesmo desenvolver a sua tendo a certeza que a mesma está certa e funciona perfeitamente?
Para isso fomos atrás do algoritmo responsável pela validação de acordo com a regras do Ministério da Fazenda para você mesmo fazer seu algoritmo e ter certeza de que o mesmo funcionará corretamente além de ter o controle do mesmo para eventuais modificações.
Â
Entendendo a Validação
Â
O CPF é composto por onze algarismos, onde os dois últimos são chamados de dÃgitos verificadores, ou seja, os dois últimos dÃgitos são criados a partir dos nove primeiros. O cálculo é feito em duas etapas utilizando o módulo de divisão 11.
Para exemplificar melhor iremos calcular os dÃgitos verificadores de um CPF hipotético, por exemplo, 222.333.666-XX.
Â
Calculando o Primeiro DÃgito Verificador
Â
O primeiro dÃgito é calculado com a distribuição dos dÃgitos colocando-se os valores 10,9,8,7,6,5,4,3,2 conforme a representação abaixo:
| 2 | 2 | 2 | 3 | 3 | 3 | 6 | 6 | 6 |
| 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Na seqüência multiplicaremos os valores de cada coluna, confira:
| 2 | 2 | 2 | 3 | 3 | 3 | 6 | 6 | 6 |
| 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| 20 | 18 | 16 | 21 | 18 | 15 | 24 | 18 | 12 |
Em seguida efetuaremos o somatório dos resultados (20+18+…+18+12), 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 de quociente e 8 de 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 parte do CPF, confira: 222.333.666-3X.
Â
Calculando o Segundo DÃgito Verificador
Â
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:
| 2 | 2 | 2 | 3 | 3 | 3 | 6 | 6 | 6 | 3 |
| 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 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: 22+20+18+24+21+18+30+24+18+6=201.
| 2 | 2 | 2 | 3 | 3 | 3 | 6 | 6 | 6 | 3 |
| 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| 22 | 20 | 18 | 24 | 21 | 18 | 30 | 24 | 18 | 6 |
Agora pegamos esse valor e dividimos por 11. Considere novamente apenas o valor inteiro do quociente, e com o resto da divisão, no nosso caso 3, usaremos para o cálculo do segundo dÃgito verificador, assim como na primeira parte.
Caso o valor do resto da divisão seja menor que 2, esse valor passa automaticamente a ser zero, que não é o nosso caso, no caso em questão é necessário subtrair o valor obtido de 11 para se obter o dÃgito verificador, ou seja, 11-3 (que foi o resto da divisão).
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 8, portanto o CPF ficaria assim: 222.333.666-38.
Â
Considerações Finais
Â
Com essa explicação você poderá montar sua própria rotina, lembre-se de colocar antes de qualquer coisa o tratamento para o número de algarismos, pois se a entrada já não estiver com onze algarismos já está incorreto o número do CPF.
Outra boa sugestão é sempre a entrada sendo feita só com os algarismos, para só depois você fazer a entrada da máscara, fica mais fácil tanto para o programador quanto para o usuário.

Validação do CPF em PHP » Clube da Informática said,
[...] dos artigos mais lidos do Clube da Informática é sobre o algortimo de validação do CPF, temos aqui no escritório essa validação em formato de função, utilizamos muito, temos em Java [...]
Amanda said,
Muito legal… Esse site usa esse materia para validar/gerar documentos como CNPJ:
http://www.gerardocumentos.com.br/
Parabens para o Blog
Deixe seu comentário