noviembre 06, 2011

Numero Perfecto en Java

El programa pide al usuario un numero entero este es evaluado(para saber si este es un numero perfecto) si es perfecto imprime en consola un mensaje diciendo que el numero ingresado es perfecto, de lo contrario imprime en consola un mensaje diciendo que el numero no es perfecto.
/**
 * Archivo: NumeroPerfecto.java
 * @author Bello Cerecero
 * @version 1.0
 * @since 06/11/2011
 */
import javax.swing.JOptionPane;
public class NumeroPerfecto 
{
    public static void main(String[] args) 
    {
      //declaramos las variables que vamos a ocupar.
      String valor;
      int entero;
      int sumaDivisiones;
 
      //Pedimos el entero al usuario
      valor=JOptionPane.showInputDialog("Dame un numero");
      //Hacemos la conversion a int.
      entero = Integer.parseInt(valor);
 
      //Inicializamos a "sumaDivisiones" en cero.
      sumaDivisiones = 0;
 
     //utilizaremos un for
     for(int i = 1; i < entero; i++)
     {
       /*
        * ponemos una condicion.
        * el simbolo % lo que hace es una division
        * pero la diferencia es que retorna el "residuo"
        * entonces al poner "(entero % i) == 0" 
        * lo que queremos decir es que
        * "entero" es divisible entre i (sin residuo)
        * si esto resulta cierto a "sumaDivisiones" 
        * lo ira almacenado y si encuentra otro 
        * numero que sea divisible entre "entero" 
        * tambien lo guardara pero tambien lo sumara con 
        * el que se encontro primero, y asi sucesivamente.
        */
       if((entero % i) == 0)
         sumaDivisiones += i;
     
       //si no se cumple se pasa a la sig iteracion.
     }
 
     /*
      * ya que finalizamos la evalucion del entero
      * ponemos una condicion para saber si la suma de 
      * los numero que resultaron divisores del entero 
      * es igual a este mismo.
      */
      if(sumaDivisiones == entero)
        System.out.println(entero + " es un num perfecto!");
      else
        System.out.println(entero +" no es un num perfecto!");
    }
}

Trate de explicarlo lo mejor que pude (con los comentarios), si tienen alguna duda mandarme un mensaje.
Loading...