SoloCodigo

Programación General => Pascal => Mensaje iniciado por: jeankh en Jueves 16 de Junio de 2016, 23:27

Título: Elaboración de programa.
Publicado por: jeankh en Jueves 16 de Junio de 2016, 23:27
Me asignaron realizar el siguiente programa:

Un número perfecto es aquel que es igual a la suma de todos sus divisores excepto el mismo. El primer número perfecto es seis (6) ya que 1+2+3=6. Escriba un programa que muestre todos los números perfectos menores que mil.

 Pero no puedo utilizar el ciclo "for" solo "repeat o while" y he intentado plantearlo pero no consigo que me de los numero que me piden, quisiera que me pudieran ayudar.
Título: Re:Elaboración de programa.
Publicado por: conyers en Viernes 24 de Junio de 2016, 19:15
Asi seria el programa en VFP:

clear
i=2   && i=variable que ira desde 2 hasta mil
Do while i<=1000
   x=1  && x iniciara desde 1 hasta i-1 para sumar los numeros divisores que estan entre 1 e "i"
   s=0  && Suma es igual a cero
   Do while x<i
      if int(i/x)=(i/x)  && Pregunto si el valor estero de la divicion es igual a la divisin natural
                     && Esto es para saber si no hay residuos en la division                     
         s=s+x         && Si es divisor sumo "x" a la suma "s"
      endif
      x=x+1
   Enddo
   if s=i         && Si la suma me da igual a "i", es perfecto
      ?i
      wait
   endif
   i=i+1
Enddo   



Saludos