Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá
Preciso de ajuda para desenvolver um algoritmo em visualg que recebe dois números e calcula a quantidade de números perfeitos entre este intervalo fechado, ou seja, incluindo os dois números.
Obs.: Um número perfeito é aquele que é igual à soma dos seus divisores (excluindo ele mesmo).
Exemplos: 6 = 1+2+3.
28= 1+2+4+7+14.
O que eu já consegui está no código abaixo.
algoritmo "perfeitos"
var i,n,soma: inteiro
inicio
leia (n)
soma <- 0
para i de 1 ate n-1 faca
se n%i=0 entao
soma <- soma + i
fimse
fimpara
se soma=n entao
escreva ("Perfeito")
senao
escreva ("Não é perfeito")
fimse
fimalgoritmo
Porém eu quero que o usuário possa escolher o intervalo. Por exemplo, de 1 a 100, e que o algoritmo retorne quantos números perfeitos existem entre 1 e 100.
Mas não tenho ideia de como começar a fazer isso.
Se alguém puder me ajudar agradeço muito.
Olá Alasca, no seu código você esqueceu de criar um for dentro do existente( Aninhado ) para encontrar os divisores dos números( que estão na variável " i " no caso ). Seguindo o enunciado do seu problema, no lugar de mostrar se o número é perfeito, você deveria incrementar 1 a alguma variável, por exemplo " Quantidade ". No final você mostra o valor da variável. No começo parece difícil, mas se vooc viajar nos códigos e na lógica vooc vai entender. Aconcelho você a começar o seu código do 0, pois vooc tomou um rumo meio troncho '~'. Espero ter ajudado :)
Pense o seguinte, você já conseguiu uma lógica para encontrar um número perfeito, agora o que você precisa fazer é colocar um laço ao redor de tudo isso ai e utilizar o número atual como uma variável de contagem (e.g: i) e fazer sua lógica normalmente, porém ao retornar os números você vai precisar criar um array de valores:
Numero => Perfeito (S/N)