Criar e Validar CPF
Com o CPF (Cadastro de Pessoa Física), é um padrão brasileiro. Após umas perguntas pro oráculo achei na wikipedia um artigo sobre CPF e um texto do iMasters que eu achei mais negócio aprender.
O CPF tem 11 dígitos, os dois últimos são chamados de dígitos verificadores e são
conseqüência dos 9 anteriores. Isso quer dizer que vc pode idealizar qualquer combinação de 9 dígitos e só precisa calcular os dois últimos dígitos para ter um CPF válido.
conseqüência dos 9 anteriores. Isso quer dizer que vc pode idealizar qualquer combinação de 9 dígitos e só precisa calcular os dois últimos dígitos para ter um CPF válido.
O primeiro dígito é o um número que depende do resto da soma de uma multiplicação de cada um dos nove dígitos por 10, 9, … 3, 2 por 11. E a do segundo é o mesmo esquema, porém inclui o primeiro dígito verificador, e a multiplicação começa em 11 (11, 10 … 3, 2).
Matematicamente falando, o primeiro dígito é 0 se o resto da divisao de (10 * a + 9 * b + 8 * c + 7 * d + 6 * e + 5 * f + 4 * g + 3 * h + 2 * i) por 11 for menor que 2 e é a diferença entre 11 e o resto da divisão caso contrário; sendo abcdefghi os nove primeiros números do CPF.
Para exemplificar vou usar 123456789 como os primeiros nove dígitos do CPF.
Dígitos do CPF | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
Multiplicadores | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Produtos | 10 | 18 | 24 | 28 | 30 | 30 | 28 | 24 | 18 |
* Para calcular o primeiro dígito verificador soma-se os produtos e divide por 11. Caso o resto da divisão seja menor que 2 o dígito verificador é 0, senão é a diferença de 11 e o próprio resto.
Com esta tabelinha fica bem mais fácil o cálculo do primeiro dígito verificar, usando módulo 11:
10 + 18 + 24 + 28 + 30 + 30 + 28 + 24 + 18 = 210
210 % 11 = 1
Como 1 é menor que 2, o dígito é 0.
10 + 18 + 24 + 28 + 30 + 30 + 28 + 24 + 18 = 210
210 % 11 = 1
Como 1 é menor que 2, o dígito é 0.
Vamos ao próximo dígito verificador.
Dígitos do CPF | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
---|---|---|---|---|---|---|---|---|---|---|
Multiplicadores | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Produtos | 11 | 20 | 27 | 32 | 35 | 36 | 35 | 32 | 27 | 0 |
Somando os produtos temos:
11 + 20 + 27 + 32 + 35 + 36 + 35 + 32 + 27 + 0 = 255
255 % 11 = 2
Como 2 não é menor que 2, o segundo dígito verificador é 11 – 2 = 9.
11 + 20 + 27 + 32 + 35 + 36 + 35 + 32 + 27 + 0 = 255
255 % 11 = 2
Como 2 não é menor que 2, o segundo dígito verificador é 11 – 2 = 9.
Assim, o CPF completo é 123456789-09.