2^ a Questão Implemente um código que escreva os n primeiros números perfeitos.

Passo 1

Então, você quer implementar um código que escreva os n primeiros números perfeitos. Vamos trabalhar com o conceito de números perfeitos, que são números iguais à soma de seus divisores próprios (excluindo ele mesmo). Para resolver isso, vamos precisar entender como identificar números perfeitos e como programar essa lógica.

Passo 2

Primeiro, vamos entender o que é um número perfeito. Um número perfeito é aquele que é igual à soma de todos os seus divisores positivos, excluindo ele próprio. Por exemplo, o número 6 é perfeito porque seus divisores são 1, 2 e 3, e 1 + 2 + 3 = 6.

Passo 3

Agora, precisamos pensar em como verificar se um número é perfeito. Vamos criar uma função que, dado um número, encontre todos os seus divisores próprios e some eles. Se a soma for igual ao número original, então ele é perfeito.
Matematicamente, para um número k, os divisores próprios são todos os números d tais que d divide k e d < k. A soma desses divisores é comparada com k.

Passo 4

Com a função para verificar números perfeitos pronta, vamos construir o algoritmo principal. Ele vai iterar números a partir de 2, verificar se cada um é perfeito usando nossa função, e continuar até encontrar n números perfeitos.
Vamos também precisar lidar com a eficiência do código, já que números perfeitos podem ser grandes e raros. No entanto, para fins de aprendizado, vamos manter a lógica simples.

Resposta

Aqui está um exemplo de código em Python que implementa essa lógica:
def is_perfect(number):
    sum_divisors = 0
    for i in range(1, number):
        if number % i == 0:
            sum_divisors += i
    return sum_divisors == number

def first_n_perfect_numbers(n):
    perfect_numbers = []
    num = 2  # Iniciamos a partir de 2, já que 1 não é considerado perfeito
    while len(perfect_numbers) < n:
        if is_perfect(num):
            perfect_numbers.append(num)
        num += 1
    return perfect_numbers

# Exemplo de uso:
n = int(input("Quantos números perfeitos você quer encontrar? "))
perfects = first_n_perfect_numbers(n)
print(f"Os {n} primeiros números perfeitos são: {perfects}")
Esse código define duas funções:
  1. is_perfect(number): Verifica se um número é perfeito somando seus divisores próprios e comparando a soma com o pr��prio número.
  2. first_n_perfect_numbers(n): Encontra os primeiros n números perfeitos usando a função anterior.
Ao executar o programa, ele solicitará que você insira quantos números perfeitos deseja encontrar e então exibirá a lista correspondente.

Exercícios relacionados