junio 29, 2013

Números Perfectos

Hola amigos de Buenas Intenciones hoy les traigo a petición de un seguidor de buenas intenciones un programa de Números Perfectos.
Bueno lo primero que debemos saber es ¿QUE ES UN NÚMERO PERFECTO?.

Un número es perfecto si es igual a la suma de todos sus divisores positivos sin incluir el propio número.
Por ejemplo, el número 6 es perfecto. 
El 6 tiene como divisores: 1, 2, 3 y 6 pero el 6 no se cuenta como divisor para comprobar si es perfecto.
Si sumamos 1 + 2 + 3 = 6 
Los siguientes números perfectos después del 6 son 28, 496, 8128, 33550336, 8589869056.
Una vez explicado este punto pasamos al código de nuestro programa.

package buenasintenciones;
/**
 * @author Ivan
 */
import javax.swing.JOptionPane;

public class NumerosPerfectos {
    public static void main(String[] args) {
        int i, suma= 0, numero;
         String numero1 = JOptionPane.showInputDialog("Ingrese el numero del 1 al 10000");
         numero= Integer.parseInt(numero1);
        for (i = 1; i < numero; i++) { 
            if (numero % i == 0) {
                suma = suma + i;   
            }
        }
        if (suma == numero) {  
            JOptionPane.showMessageDialog(null, "El numero es perfecto");
        } else {
            JOptionPane.showMessageDialog(null, "El numero no es perfecto");

        }
    }
}
Bueno lo primero que tenemos que hacer es declarar la libreria JOptionPane para poder insertar nuestros datos más adelante, declaramos el nombre de nuestra clase en este caso es NumerosPerfectos, declaramos nuestro metodo main. En la linea 10 declaramos tres variables de tipo int con su nombre i, suma(esta con un valor inicial de 0) y numero. En la linea 11 declaramos una variable de tipo String con nombre numero1 y la igualamos con nuestro JOptionPane que sirve para insertar datos y colocamos el comentario entre comillas que queremos que nos muestre. En la 12 tenemos que convertir nuestro valor anterior a un valor entero que es igual a un valor de tipo int, esto ya que nuestro JOptionPane recibio un valor de tipo String. en nuestra linea 13 declaramos un ciclo for con las condiciones i=1, donde este valor i van a ser los divisores y los dividira hasta de 1 hasta n-1, en la linea 14 solo declaramos que si el valor de la suma es un un divisor se sume.
En la 18 declaramos nuestra condicion if diciendo que si es el valor de suma es igual a numero sera un valor perfecto y por ultimo nuestras salidas con un JOption de mensajes.

No hay comentarios.:

Publicar un comentario