
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:
Apesar do nome “algoritmo” soar complicado, o processo é fácil de entender:
Vamos validar o número 7992739871:
Soma total: 7 + 2 + 3 + 8 + 7 + 9 + 5 + 9 + 7 + 2 = 69
Ou seja, o número completo válido seria 79927398713.
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.
Vamos agora ver como gerar um número válido com base no Algoritmo de Luhn. O processo é:
Criamos um número base (sem o dígito verificador).
Calculamos qual dígito verificador torna o número válido.
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
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.
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.
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.
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.
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.
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.
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 […]
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 […]
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.
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 […]