bom, hoje cedo tava vendo o algoritimo para testar CPF… ele é bem simples, vou dar um resumida…
vc pega os 9 primeiros digitos do CPF, ou seja, esquece os 2 digitos verificadores…
para checar o 1° digito, vc multiplica por 10 o 1° digito, por 9 o 2° e assim por diante
ate chegar no 9° digito que multiplica por 2…
Soma o resultado de todas essas multiplicações. ai ve o resto da divisão dessa soma por 11
se o resto for 0 ou 1 … então o 1° digito será 0, caso contraio faz 11-resto e esse será o 1° digito
1 2 3 4 5 6 7 8 9
10 9 8 7 6 5 4 3 2
para o 2° digito é igual, so que começa do 11… 11 x 1° digito … 10 x 2° digito… 3 x 9° digito…
faz o mesmo com o resto e acha o segundo digito…
1 2 3 4 5 6 7 8 9
11 10 9 8 7 6 5 4 3
bom com esses 2 digitos só checar se bate com os digitos verificadores informados pelo usuario…
o problema ta sendo bem basico… quando o CPF é 000.000.000-00 a conta bate tb… e da valido…
seria esse CPF valido ???
segue código java para algoritimo
[code] //String de CPF valida com 11 digitos
public static String digitValidator(String cpfString) {
long firstDigitSum = 0;
long secondDigitSum = 0;
for (int i = 0; i<10; i++) {
String s = cpfString.substring(i, i+1);
firstDigitSum += (10-i) * Integer.parseInt(s);
secondDigitSum += (11-i) * Integer.parseInt(s);
}
//firstDigitSum%11 é o mesmo que “Resto da divisão de firstDigitSum por 11”
long digit1 = ((firstDigitSum % 11) > 1) ? 11 - (firstDigitSum % 11) : 0;
long digit2 = ((secondDigitSum % 11) > 1) ? 11- (secondDigitSum % 11) : 0;
return "" + digit1 + digit2;
}[/code]
esse código retorna os 2 digitos que verificam o CPF enviado
… quando envio o cpf 000.000.000-00 ele sai como valido =[ mais queria saber c na real eu concidero isso como verade