import java.io.*;
import java.util.*;
import java.lang.System.*;
import java.awt.*;

/**
 * Perfect.java
 * Programa que indica si un numero es perfecto o no
 * Uso: Perfect <n> 
 * donde n es debe ser un numero entero
 * @version 1.0
 * @author William Mendoza Rodriguez 
 */

public class Perfect
{
  	public static void main(String args[]) 
  	{
		int valor=0;
		int cont=0;
		int suma=0;         									//valor numerico del parametro de entrada
		String caracter;      									//caracter que recibo como parametro
			
		
		if (args.length == 0) {									//En caso de que NO reciba parámetro
	    	System.out.println("  Uso: java Perfect <n>");
		} 														//Fin if
		else {													//En caso que SI reciba parámetro lo asigno a una variable
	    	caracter = args[0];
	    	try {												
				caracter = caracter.trim();						//le quito espacios en blanco
				valor = Integer.parseInt(caracter);				//si es posible lo convierto a entero
			} 													//Fin try
	    	catch (Exception e){								//En caso de que el valor del parametro sea incorrecto
				System.out.println(e.toString()+"\n Uso: java Perfect <n> \n Valor incorrecto: " + caracter);
				System.exit(0);									//Salimos al sistema
			} 													//Fin catch
	    	
	    	//System.out.println("Valor correcto: " + caracter);	//En caso de ser un valor exacto lo imprimo y continuo la ejecución
			
			if(valor<=0){											//En caso de que el numero se negativo	
					System.out.println("El numero debe ser positivo mayor que 0.");  // En caso de que el número sea menor que 0 
			}
			else if(valor==1){										//En caso de que el numero digitado sea igual a 1
			System.out.println("El numero es perfecto");  			// Envio un mensaje diciendo que el numero es perfecto.
			}
			else {													//En caso de que el numero no se negativo ni sea 1						
				suma=0;												//Inicializo la variable suma en 0	
				for (cont=1;cont<=(valor/2);cont++){				//Comienzo el ciclo desde 1 hasta la mitad del valor
					if(valor%cont==0){								//Si el residuo es diferente de 0
						suma=suma+cont;								//Incremento suma con el valor del contador
					}		   		
		   		}
		   		//System.out.println("\n" + suma + "\n");			//Esta es una prueba
		   		if (suma==valor){									//Comparo si la suma es igual al valor 
		   				System.out.println("El numero es perfecto");  			// Envio un mensaje diciendo que el numero es perfecto.
		   		}
		   		else{
						System.out.println("El numero NO es perfecto");  		// Envio un mensaje diciendo que el numero NO es perfecto.		   			
		   		}
			}
		}				
		
																//Fin del else
		System.exit(0);															//Salimos al sistema 														//Fin else
    }																			// Fin main
} 																				//Fin Perfect
	
      