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
e
são.
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
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