Nesta aula vamos resolver o exercício 4 com a linguagem de programação portugol.
4) Leia um número x maior que 1 e diga se ele é um número perfeito.
Antes de qualquer ação precisamos entender o que é um número perfeito, só assim conseguiremos elaborar um algoritmo para descobrir se um número é um número perfeito ou não.
O que é um número perfeito?
Dizemos que x é um número perfeito quando a soma de seus divisores, exceto o próprio x, é igual a x.
A princípio pode parecer confuso, mas não é. Vamos a alguns exemplos de números perfeitos.
6 -> 1 + 2 + 3 = 6
Os divisores do número 6 são: 1, 2, 3 e 6. Excluindo o próprio 6, temos: 1, 2 e 3. A soma desses divisores é: 1 + 2 + 3 = 6.
28 -> 1 + 2 + 4 + 7 + 14 = 28
O número 28 também é um número perfeito pois a soma de seus divisores exceto o próprio 28 também resulta em 28.
Agora que já sabemos identificar um número perfeito, vamos elaborar um algoritmo para fazer isso.
Como precisamos descobrir os divisores de x entre 1 e x – 1, inicializamos a variável valor com 1 e divisores com zero.
Iniciamos com uma repetição, garantindo que será digitado um valor maior que 1.
Em seguida temos a repetição em busca dos divisores de x. Se o resto da divisão de x por valor for igual a zero, significa que valor é um divisor de x, então já somamos ele na variável divisores.
O conteúdo da variável valor sempre será incrementado em uma unidade, independente do resultado do teste, até ser igual a x – 1.
Quando a variável valor for exatamente igual a x a repetição será finalizada. Agora basta verificar se o valor da variável divisores, que contém a soma dos divisores exceto o próprio x, é exatamente igual a x.
programa{ funcao inicio(){ inteiro x, valor = 1, divisores = 0 faca{ escreva("Digite um valor maior que 1: ") leia(x) }enquanto(x < 2) enquanto(valor < x){ se(x % valor == 0){ escreva(valor,", ") divisores += valor } valor++ } escreva("\n\n") se(divisores == x){ escreva(x, " é um número perfeito.\n") } senao{ escreva(x, " não é um número perfeito.\n") } } }