Algoritmo de CPF, útil pra quem quizer criar geradores ;P

Started by Quicky, 02 de August , 2006, 01:13:48 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Quicky

Olá.. tava fuçando na net sobre cpf..
e achei o algoritmo.. x]
pra quem não sabe.. nda mais é do que a "fórmula"
para criação de um cpf válidu x]
é bastante útil pra quem quizer criar um gerador por exemplo
ou senão um validador..
eu fiz o meu gerador em javascript e html x]
se kizerem tentar.. eh bem interessante...

mas vamos lá..

Como fazer um CPF:

*Um cpf possui 11 algarismos.. separados da seguinte forma: xxx.xxx.xxx-xx
*Os 9 primeiros algarismos separados em trio, podem ser qualquer combinação de numeros, desde que não se repita um único algarismo as 9 vezes..
*Os 2 ultimos numeros tem uma ligação com os 9 primeiros.. são eles quem ditam se o cpf é valido ou não..

Mãos Á obras..
Usarei como exemplo... o cpf 222.333.666 que precisará dos dois ultimos digitos pra se validar..
como obtê-los

Multiplica-se kda digito do cpf, por os numeros decrescendo de 10 até 2.. como na figura abaixo:


Multiplique os numeros de cima, pelo seu respectivo numero embaixo...
Some então o produto das multiplicações.. Você obterá apenas um numero..
Divida esse numero por 11.. fazendo uma divisão para não obter um numero decimal..

Exemplo:
20/11 = 1 e sobram 9

Feito essa divisão.. pegue a sobra.. no exemplo acima.. o 9... Kaso esse numero seja menor do que 2..
considere o primeiro digito verificador = 0... kaso seja maior.. subtraia ele de 11.. e então vc obterá o 1 digito verificador..

No nosso exemplo principal 222.333.666
Mutlplica-se pela tabela.. e obtem-se
20 - 18 - 16 - 21 - 18- 15 - 24 - 18 - 12
Fazendo a somatória.. obtem-se 162...
Divide-se para obter um resultado com sobra o 162 por 11..
Obtemos = 14.. e 8 de resto..
Pegamos o 8.. e o subtraimos de 11..
Logo 11 - 8 = 3..
Ou seja.. nosso primeiro digito verificador = 3..
Lembrando que caso o resultado da subtação fosse 1.. igualariamos a 0.. pois é menor que 2.. oque não é nosso caso

222.333.666-3

Agora.. repetimos baiscamente o processo.. só que agora..  temos 10 numeros.. então nossa tabela.. vai receber o 11 como primeiro membro =].

Fikando assim:


Repetimos novamente o processo de multplicação.. somatória.. e divisão.. da mesma forma que fizemos para obter o primeiro digito...

Lembrando que caso o resto da divisão seja menor que 2.. igualamos diretamente o digito a 0..

Bom.. espero que tenham gostado.. By Quicky..
Just Me...

Fvox

Muito bom cara !

Mas não curto muito ficar fazendo contas..

Por isso tenho um CPF Generator aqui ! :D
"Achas que estás caindo na insanidade? Mergulhe."



rodweb

o kratos ja postou sobre isso aki senão me engano...mais vlw... :)