1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
-- 24/02/2012 -- Un número entero se dice perfecto si es igual a la suma de sus divisores (excepto él mismo, pero incluyendo el 1). El primer número perfecto es 6: 6=1+2+3. Escriba un programa que visualice los 4 primeros números perfectos. with ada.text_io; with ada.integer_text_io; procedure ada7x06 is use ada.text_io; use ada.integer_text_io; -- Constante: numAMostrar:constant := 4; elNumero:integer := 2; -- Se comienzan a comprobar los números desde el 2. sumaDiv:integer := 0; -- Contabiliza la suma de los divisores de elNumero. i:integer := 0; -- Contador de números perfectos. j:integer := 1; -- Contabiliza el número del cual hay que comprobar si es divisor de elNumero. begin -- Se van a calcular los 4 primeros números perfectos: while i < numAMostrar loop -- j avanza todos los numeros de 1 hasta elNumero while j < elNumero loop -- Si elNumero es divisible por j, se suma j al contador de divisores. if elNumero mod j = 0 then sumaDiv := sumaDiv + j; end if; j := j+1; end loop; -- Si la suma de los números divisores de elNumero es igual a elNumero, se imprime el resultado y se contabiliza el numero perfecto hallado: if sumaDiv = elNumero then put(i+1,width=>1); put("º número perfecto: "); put(elNumero,width=>1); new_line; i := i+1; end if; elNumero := elNumero+1; -- Se avanza una posición para comprobar el siguiente número. sumaDiv := 0; -- Se resetea el acumulador de divisores. j := 1; -- Se resetea el contador j a 1. end loop; end ada7x06; |
GRACIAS POR SU GRAN AYUDA
SALUDOS DESDE PERÚ