O que é o Algoritmo de Luhn? Entenda de forma simples

Algoritmo de Luhn

 

Você já parou para pensar como sistemas sabem se um número de cartão de crédito ou CPF está digitado corretamente? Um dos segredos por trás dessa validação é o Algoritmo de Luhn — também conhecido como “fórmula de Luhn” ou “mod 10”.

Desenvolvido por Hans Peter Luhn, um cientista da IBM, em 1954, esse algoritmo é uma técnica simples, mas genial, para detectar erros comuns de digitação, como um número trocado ou faltando. Ele é amplamente usado em:

  • Números de cartão de crédito
  • CPF e CNPJ (em versões adaptadas)
  • Números de identificação bancária
  • Diversos outros códigos que exigem validação rápida.

 

Como o Algoritmo de Luhn funciona?

Apesar do nome “algoritmo” soar complicado, o processo é fácil de entender:

  1. Comece da direita para a esquerda do número.
  2. Dobre o valor de cada segundo dígito.
  3. Se a multiplicação resultar em um número maior que 9, some os dois dígitos (por exemplo, 12 vira 1 + 2 = 3).
  4. Some todos os dígitos (os dobrados e os normais).
  5. Se o total for divisível por 10, o número é considerado válido.

 

Exemplo rápido

Vamos validar o número 7992739871:

  1. Dobrando os segundos dígitos da direita:
    • 1 → 2
    • 8 → 16 → 1 + 6 = 7
    • 9 → 18 → 1 + 8 = 9
    • 7 → 14 → 1 + 4 = 5
    • 9 → 18 → 1 + 8 = 9
  2. Agora somamos todos:
    • Dígitos que não foram dobrados: 7 + 2 + 3 + 8 + 7
    • Dígitos dobrados e ajustados: 9 + 5 + 9 + 7 + 2

    Soma total: 7 + 2 + 3 + 8 + 7 + 9 + 5 + 9 + 7 + 2 = 69

  3. Para ser válido, o total mais o dígito verificador precisa ser múltiplo de 10.
    • 69 + 3 (o dígito verificador) = 72 → Não é divisível por 10.
    • O dígito verificador correto seria 1 (porque 69 + 1 = 70).

Ou seja, o número completo válido seria 79927398713.

 

Por que o Algoritmo de Luhn é importante?

  • Facilita a detecção de erros: Evita envios com números digitados incorretamente.
  • Leve e rápido: Pode ser implementado facilmente até em dispositivos com pouca capacidade de processamento.
  • Amplamente aceito: Faz parte de padrões globais de segurança de dados.

 

Curiosidade

Apesar de ser muito eficaz para detectar erros simples, o Algoritmo de Luhn não é uma ferramenta de segurança contra fraudes. Ele apenas verifica se um número parece correto — não se realmente existe.

 

Exemplo do Algoritmo de Luhn em Python

def luhn_check(number):
    digits = [int(d) for d in str(number)]
    checksum = 0

    # Começa da direita para a esquerda
    reverse_digits = digits[::-1]

    for i, d in enumerate(reverse_digits):
        if i % 2 == 1:  # Dobra os dígitos em posições ímpares
            d = d * 2
            if d > 9:
                d -= 9
        checksum += d

    return checksum % 10 == 0

# Exemplo de uso
numero = "79927398713"
if luhn_check(numero):
    print(f"{numero} é válido!")
else:
    print(f"{numero} é inválido.")

 

Exemplo do Algoritmo de Luhn em JavaScript

function luhnCheck(number) {
    let digits = number.split('').map(Number);
    let checksum = 0;

    // Começa da direita para a esquerda
    digits.reverse().forEach((d, i) => {
        if (i % 2 === 1) { // Dobra os dígitos em posições ímpares
            d *= 2;
            if (d > 9) d -= 9;
        }
        checksum += d;
    });

    return checksum % 10 === 0;
}

// Exemplo de uso
const numero = "79927398713";
if (luhnCheck(numero)) {
    console.log(`${numero} é válido!`);
} else {
    console.log(`${numero} é inválido.`);
}

 

Esses exemplos verificam se o número é válido usando o Algoritmo de Luhn. Você pode testar com números reais de cartão de crédito (apenas para validação de formato!) ou inventar números para entender como o algoritmo age.

 

Criando geradores de números de Luhn válidos

Vamos agora ver como gerar um número válido com base no Algoritmo de Luhn. O processo é:

  1. Criamos um número base (sem o dígito verificador).

  2. Calculamos qual dígito verificador torna o número válido.

  3. Adicionamos esse dígito ao final.

 

🔢 Exemplo em Python – Gerador de número válido com Luhn:

def gerar_luhn(numero_base):
    digits = [int(d) for d in str(numero_base)]
    checksum = 0

    # Adiciona um zero no final para simular o dígito verificador
    digits.append(0)
    reverse_digits = digits[::-1]

    for i, d in enumerate(reverse_digits):
        if i % 2 == 1:
            d = d * 2
            if d > 9:
                d -= 9
        checksum += d

    # Calcula o dígito verificador
    digito_verificador = (10 - (checksum % 10)) % 10
    return f"{numero_base}{digito_verificador}"

# Exemplo: número base com 11 dígitos
base = "7992739871"
numero_completo = gerar_luhn(base)
print(f"Número com dígito verificador: {numero_completo}")

 

🔢 Exemplo em JavaScript – Gerador de número válido com Luhn:

function gerarLuhn(numeroBase) {
    let digits = numeroBase.split('').map(Number);
    digits.push(0); // Adiciona um zero para simular o dígito verificador
    digits.reverse();

    let soma = 0;
    for (let i = 0; i < digits.length; i++) {
        let d = digits[i];
        if (i % 2 === 1) {
            d *= 2;
            if (d > 9) d -= 9;
        }
        soma += d;
    }

    let verificador = (10 - (soma % 10)) % 10;
    return numeroBase + verificador.toString();
}

// Exemplo: número base com 11 dígitos
const base = "7992739871";
const completo = gerarLuhn(base);
console.log(`Número com dígito verificador: ${completo}`);

Esses geradores são úteis em testes de sistemas de pagamento, formulários e qualquer aplicação que use validação com o Algoritmo de Luhn.

 

 

Queremos a sua opinião!

Se você curtiu este conteúdo sobre o Algoritmo de Luhn, que tal deixar um comentário com sua opinião ou dúvida? 💬
Compartilhe com seus amigos que também gostam de entender o que há por trás da tecnologia do dia a dia! 🔁🚀

Vamos espalhar conhecimento juntos! 📚✨

 

 

#Tecnologia #AlgoritmoDeLuhn #ValidaçãoDeDados

#SegurançaDigital #Programação #Desenvolvimento

#Inovação #CuriosidadesTech #LinkedInTech #DevLife

#GiovaniDaCruz

 

  • Publicado por Giovani Da Cruz
  • 0 comentarios
  • 9 de maio de 2025

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados a Categoria Computação

Continue aprendendo

Aumente o seu conhecimento
AlphaFold: quando inteligência artificial resolve um problema clássico da biologia molecular

O AlphaFold revolucionou o estudo das proteínas ao aplicar deep learning e arquiteturas baseadas em attention para prever estruturas tridimensionais com alta precisão. Mais do que um avanço na biologia, ele representa um marco na aplicação de inteligência artificial como infraestrutura central da descoberta científica.

22 de fevereiro de 2026
O Perceptron de Frank Rosenblatt: O Primeiro Passo da Inteligência Artificial

Entenda o que é o Perceptron de Frank Rosenblatt, o primeiro modelo de neurônio artificial, suas limitações e o papel fundamental que desempenhou na origem das redes neurais e da inteligência artificial moderna.

3 de fevereiro de 2026
O que é Edge Computing e por que ele está moldando o futuro da tecnologia?

Edge Computing está revolucionando o processamento de dados ao levar poder computacional para mais perto da fonte. Descubra como essa tecnologia reduz latência, aumenta eficiência e transforma setores como indústria, saúde e cidades inteligentes.

24 de novembro de 2025
O Algoritmo Transformador: Como a Atenção Mudou a Inteligência Artificial

O algoritmo transformador revolucionou a inteligência artificial ao introduzir o conceito de atenção, permitindo que máquinas entendam melhor o contexto em textos, imagens e sons. Descubra como essa inovação mudou o futuro da IA.

19 de novembro de 2025
O Gargalo de Von Neumann: Limite Clássico da Arquitetura dos Computadores

O gargalo de Von Neumann é uma limitação clássica da computação: mesmo com processadores cada vez mais rápidos, a CPU e a memória compartilham o mesmo canal de comunicação, criando um “pedágio” que reduz o desempenho. Entenda como esse desafio surgiu, como a indústria busca soluções e quais caminhos o futuro da computação pode tomar.

3 de outubro de 2025
Algoritmo de Grover: A Revolução da Busca Quântica

Descubra como o Algoritmo de Grover acelera buscas em bancos de dados não estruturados usando a computação quântica, reduzindo de N para √N passos. Um dos exemplos mais fascinantes do poder quântico aplicado a problemas reais.

27 de setembro de 2025
O Problema do Caixeiro Viajante: Entendendo o Desafio e Suas Soluções

O Problema do Caixeiro Viajante (ou Travelling Salesman Problem, TSP) é um dos desafios mais conhecidos na área da ciência da computação, matemática e otimização combinatória. Ele se apresenta de forma simples, mas sua resolução é notoriamente complexa e desafiadora.   O que é o problema do Caixeiro Viajante? Imagine um vendedor que precisa visitar […]

20 de janeiro de 2025
Entendendo as Classes de Problemas P e NP

  No mundo da computação, existe uma questão central que intriga cientistas e matemáticos: todos os problemas que podem ser verificados rapidamente por um computador também podem ser resolvidos rapidamente? Essa dúvida nos leva às classes de problemas P e NP, que estão no coração da Teoria da Complexidade Computacional.   O que é a […]

10 de janeiro de 2025
O Bug do Ano 2038: Um Novo Y2K à Vista?

O artigo explora o problema conhecido como Y2K38, que afetará sistemas de 32 bits que utilizam o padrão Unix para contagem de tempo. Em 19 de janeiro de 2038, esses sistemas alcançarão o limite máximo de segundos representáveis, resultando em falhas na representação de datas e possíveis erros em softwares críticos.

8 de janeiro de 2025
O que é Machine Learning e Deep Learning?

  O avanço da tecnologia tem trazido inovações cada vez mais impressionantes, e entre elas estão o Machine Learning (ML) e o Deep Learning (DL). Ambos fazem parte do campo da Inteligência Artificial (IA), mas possuem diferenças significativas em sua abordagem, funcionamento e aplicações. Este artigo explica o que são essas tecnologias, como funcionam e […]

19 de dezembro de 2024

Publicidade

Redes Sociais

Receba as Novidades

Loading