Faça uma função Python
infoNumerosPerfeitosNaMatriz (matriz) para retornar a soma e o total de números perfeitos na matriz passada como parâmetro.
Exemplo: para a matriz
matriz = [ [1,1,1], [6,28], [5] ] #o programa irá gerar
soma, total = infoNumerosPerfeitosNaMatriz(matriz) # 34 e 2
Lembrando que números perfeitos são aqueles cuja soma de seus divisores ( exceto ele próprio) é igual ao próprio número. Portanto 1 não é considerado perfeito, mas 6(1+2+3) e 28(1+2+4+7+14) são.

Passo 1

Beleza, vamos resolver esse exercício juntos! A gente precisa criar uma função em Python chamada infoNumerosPerfeitosNaMatriz que recebe uma matriz (ou lista de listas) e retorna a soma e o total de números perfeitos encontrados nessa matriz. Para isso, vamos precisar entender o que é um número perfeito e como percorrer uma matriz em Python.

Passo 2

Primeiro, vamos lembrar o que é um número perfeito. Um número perfeito é aquele cuja soma de seus divisores próprios (excluindo ele mesmo) é igual ao próprio número. Por exemplo, o 6 é perfeito porque seus divisores próprios são 1, 2 e 3, e 1 + 2 + 3 = 6.

Passo 3

Vamos começar definindo a nossa função infoNumerosPerfeitosNaMatriz(matriz). Dentro dessa função, vamos precisar de duas variáveis: uma para armazenar a soma dos números perfeitos encontrados e outra para contar quantos números perfeitos temos na matriz.

Passo 4

Para percorrer todos os elementos da matriz, vamos usar dois loops: um para iterar pelas linhas da matriz e outro para iterar pelos números dentro de cada linha. Assim, garantimos que vamos verificar cada número presente.

Passo 5

Agora, precisamos verificar se um número é perfeito. Para isso, vamos criar uma função auxiliar chamada eh_numero_perfeito(numero) que recebe um número e retorna True se ele for perfeito ou False caso contrário.

Passo 6

Dentro da função eh_numero_perfeito, vamos calcular a soma dos divisores próprios do número. Para encontrar os divisores, vamos testar todos os números de 1 até metade do número (já que nenhum divisor próprio é maior que a metade do próprio número). Se a soma desses divisores for igual ao número, ele é perfeito.

Passo 7

Com a função auxiliar pronta, vamos voltar para a nossa função principal. Para cada número na matriz, vamos usar a função eh_numero_perfeito para verificar se é perfeito. Se for, adicionamos esse número à soma total e incrementamos o contador de números perfeitos.

Passo 8

Após percorrer toda a matriz, a função infoNumerosPerfeitosNaMatriz vai retornar a soma total dos números perfeitos e o total de números perfeitos encontrados.

Resposta

A função infoNumerosPerfeitosNaMatriz(matriz) retorna a soma dos números perfeitos, que é 34, e o total de números perfeitos na matriz, que é 2.

Código Completo

def eh_numero_perfeito(numero):
    if numero < 2:
        return False
    soma = 0
    for i in range(1, numero):
        if numero % i == 0:
            soma += i
    return soma == numero

def infoNumerosPerfeitosNaMatriz(matriz):
    soma_total = 0
    total_perfeitos = 0
    for linha in matriz:
        for numero in linha:
            if eh_numero_perfeito(numero):
                soma_total += numero
                total_perfeitos += 1
    return soma_total, total_perfeitos

# Exemplo de uso:
matriz = [ [1,1,1], [6,28], [5] ]
soma, total = infoNumerosPerfeitosNaMatriz(matriz)
print(soma, total)  # Output: 34 2

Exercícios relacionados