Validar um CPF manualmente pode parecer complexo, mas com um algoritmo matemático simples, você pode garantir a autenticidade do documento sem depender de bibliotecas externas. Este método é eficaz, rápido e totalmente baseado em operações aritméticas, tornando-o ideal para implementação em qualquer linguagem de programação ou até mesmo em uma planilha do Excel.
Antes de aplicar o algoritmo, é necessário remover caracteres não numéricos (como pontos e hífen) e garantir que o CPF tenha exatamente 11 dígitos. Se o CPF tiver menos de 11 dígitos, complete com zeros à esquerda.
cpf_limpo = cpf.replace('.', '').replace('-', '')
cpf_numerico = cpf_limpo.zfill(11)
O primeiro dígito verificador é calculado multiplicando os 9 primeiros dígitos do CPF por um peso decrescente de 10 a 2, somando os resultados e aplicando o módulo 11.
soma = 0
for i in range(9):
soma += int(cpf_numerico[i]) * (10 - i)
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
O segundo dígito é calculado de forma semelhante, mas agora incluindo o primeiro dígito verificador no cálculo e usando pesos de 11 a 2.
soma = 0
for i in range(10):
soma += int(cpf_numerico[i]) * (11 - i)
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
Após calcular os dois dígitos verificadores, compare-os com os dois últimos dígitos do CPF original. Se ambos coincidirem, o CPF é válido.
if digito1 == int(cpf_numerico[9]) and digito2 == int(cpf_numerico[10]):
print("CPF válido")
else:
print("CPF inválido")
| CPF de Entrada | Primeiro Dígito Verificador | Segundo Dígito Verificador | Resultado |
|---|---|---|---|
| 123.456.789-09 | 0 | 9 | Válido |
| 111.444.777-35 | 3 | 5 | Válido |
| 123.456.789-00 | 0 | 0 | Inválido |
Com este método, você pode validar qualquer CPF usando apenas operações matemáticas básicas. A simplicidade do algoritmo permite sua implementação em diversos contextos, desde scripts Python até fórmulas do Excel, garantindo precisão e confiabilidade na validação de documentos.