Um número perfeito é um número natural para o qual a soma de todos os seus divisores naturais, exceto ele próprio é igual ao próprio número. Exemplo 6 é um número perfeito, pois
. O número 28 é um número perfeito, pois
. Faça um programa que automaticamente, calcule e imprima e os 4 primeiros números perfeitos a partir do número 2 .
Passo 1
O enunciado pede que façamos um programa que calcule e imprima os 4 primeiros números perfeitos a partir do número
.
Informações e o que é pedido:
Informações e o que é pedido:
- Definição: um número é perfeito quando a soma de todos os seus divisores naturais, exceto ele próprio, é igual ao próprio número. Ou seja, para um número
queremos que
- Exemplos dados no enunciado (que confirmam a definição):
- Objetivo final prático: gerar automaticamente (num programa) e imprimir os quatro primeiros números perfeitos maior ou igual a
.
Passo 2
Ideia simples (explicação didática do processo matemático): para testar se um número
é perfeito precisamos somar todos os divisores próprios de
(ou seja, todos os divisores positivos menores que
) e ver se essa soma dá exatamente
.
O método mais direto (ingênuo) é:
- Para cada
de até , verificar se (ou seja, se ) e, se sim, somar . - No final comparar a soma com
.
Isso funciona, mas é lento para números grandes porque faz muitas divisões:
verificações para cada
.
Passo 3
Otimização essencial (aquela que você deve usar na prova para não perder tempo e para o programa rodar rápido):
- Se
é divisor de , então existe o divisor “par” . Isso significa que divisores vêm em pares (exceto quando , caso em que o par é o próprio ). - Logo, basta testar
até . Para cada que divide adicionamos e à soma (tratando o caso em que para não somar duas vezes). - Observação prática:
é sempre divisor próprio de , então podemos começar a soma com e testar a partir de até .
Explicando com uma fórmula/algoritmo para somar divisores próprios de
:
Para cada
:
- Se
então: - Se
(ou seja, ) então . - Caso contrário,
.
- Se
No final verificamos se
. Se sim,
é perfeito.
Complexidade aproximada: testar até
reduz muito o número de divisões quando
cresce.
Passo 4
Pseudocódigo do programa (claro e direto, você pode implementar em qualquer linguagem):
- Inicializar uma lista vazia de perfeitos achados.
- Para
(incrementando): - Calcular
usando o método otimizado do Passo 3. - Se
, adicionar à lista de perfeitos. - Parar quando tivermos 4 números perfeitos.
- Calcular
Exemplo de implementação em Python (copia, cola e roda — é só um exemplo prático que mostra exatamente como fazer):
def soma_divisores_proprios(n):
if n == 1:
return 0
soma = 1
d = 2
limite = int(n**0.5)
while d <= limite:
if n % d == 0:
outro = n // d
if d == outro:
soma += d
else:
soma += d + outro
d += 1
return soma
perfeitos = []
n = 2
while len(perfeitos) < 4:
if soma_divisores_proprios(n) == n:
perfeitos.append(n)
n += 1
print(perfeitos) # irá imprimir: [6, 28, 496, 8128]
Comentando o código linha a linha (didático):
soma_divisores_proprios(n): função que implementa o algoritmo do Passo 3.- Começamos
soma = 1porqueé divisor próprio de qualquer . limite = int(n**0.5)calcula. - Para cada divisor
encontrado, somamos e (tratando o caso para não somar duas vezes). - No loop principal acumulamos números perfeitos até termos 4.
Passo 5
Verificações manuais (para você entender bem e poder justificar na prova): vamos mostrar que os quatro primeiros números perfeitos são realmente
listando seus divisores próprios e somas.
-
Para
: - Divisores próprios:
. - Soma:
Entãoé perfeito. - Divisores próprios:
-
Para
: - Divisores próprios:
. - Soma:
Entãoé perfeito. - Divisores próprios:
-
Para
: - (Você pode obter a lista executando o programa ou fatorando
.) - Divisores próprios:
. - Soma: calcule em duas partes:
eentão soma totalLogoé perfeito. - (Você pode obter a lista executando o programa ou fatorando
-
Para
: - (Fatorando:
.) - Divisores próprios:
. - Soma das potências de
até : - Soma dos múltiplos por
: - Soma total dos divisores próprios:
Entãoé perfeito. - (Fatorando:
Passo 6
Resumo prático e dica para a prova:
- Use a otimização até
para somar divisores (isso reduz tempo). - Comece somando
e trate para não duplicar. - Verifique cada
em ordem crescente até reunir os 4 primeiros perfeitos. - O programa do Passo 4 faz exatamente isso e imprime a lista dos primeiros 4 perfeitos.