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")
}
}
}
