Os dois últimos dígitos do CPF são números de verificação: seguem um algoritmo de módulo 11.
O dígito anterior (isto é, o terceiro dígito da direita para a esquerda) revela a unidade federativa em que a pessoa registrou-se pela primeira vez.
Assim, basta observar o dígito final antes do traço para descobrir sua origem.
Segue a lista com todos os estados brasileiros:
* 0 Rio Grande do Sul
* 1 Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul e Tocantins
* 2 Amazonas, Pará, Roraima, Amapá, Acre e Rondônia
* 3 Ceará, Maranhão e Piauí
* 4 Paraíba, Pernambuco, Alagoas e Rio Grande do Norte
* 5 Bahia e Sergipe
* 6 Minas Gerais
* 7 Rio de Janeiro e Espírito Santo
* 8 São Paulo
* 9 Paraná e Santa Catarina
Exemplo: CPF XXX.XXX.XX"6"-YY -- O número destacado (6) indica que a origem deste CPF é Minas Gerais, cujo código é "6".
Significance of the digits
The last two digits are used to perform a mod 11 algorithm.
The previous digit (the third digit from right to left) reveals a federal unit in which the person was registered.
So just examine the digit before the final dash to discover its origin.
List of all the Brazilian state categories:
* 0 Rio Grande do Sul
* 1 Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul and Tocantins
* 2 Amazon, Para, Roraima, Amapá, Acre and Rondônia
* 3 Ceará, Maranhão and Piauí
* 4 Paraíba, Pernambuco, Alagoas and Rio Grande do Norte
* 5 Bahia and Sergipe
* 6 Minas Gerais
* 7 Rio de Janeiro and Holy Spirit
* 8 Sao Paulo
* 9 Paraná and Santa Catarina
Example: CPF xxx.xxx.xx "8"-Y -- The highlighted number (8) indicates that the origin of this CPF is from Sao Paulo.
Algoritmo para a validação do CPF
Excellent clean Javascript String prototype for CPF validation from JSfromHell.com:
String.prototype.isCPF = function(){
var c = this;
if((c = c.replace(/[^\d]/g,"").split("")).length != 11) return false;
if(new RegExp("^" + c[0] + "{11}$").test(c.join(""))) return false;
for(var s = 10, n = 0, i = 0; s >= 2; n += c[i++] * s--);
if(c[9] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
for(var s = 11, n = 0, i = 0; s >= 2; n += c[i++] * s--);
if(c[10] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
return true;
};
Receita Federal
- Emissão do Comprovante de Inscrição e de Situação Cadastral de Pessoa Jurídica
http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/CPF/ConsultaPublica.asp
References
- Wikipedia: Cadastro de Pessoas Físicas
- JSfromHell isCPF() javascript string prototype
- Receita Federal: Cadastro de Pessoas Físicas