import algds.IOUtils;
/**
 * AlgDs WS99 Aufgabe 08.
 *
 * Das Programm pr&uuml;ft, ob eine eingegebene Zahl vollkommen ist
 * (der Summe ihrer echten Teiler einschliesslich 1 gleich ist).
 * Bei Eingabe von 0 gibt es alle vollkommenen Zahlen bis 1000 aus.
 *
 * @author Christian Semrau, 06.12.1999, 24.12.1999<br>
 * <a href="mailto:Christian.Semrau@student.uni-magdeburg.de">
 * Christian.Semrau@student.uni-magdeburg.de</a>
 */
public class ChS_Aufg08 {

/**
 * Liefert true, wenn die Zahl perfekt/vollkommen ist,
 * d.h, die der Summe ihrer echten Teiler einschlie&szlig;lich
 * 1 gleich ist.
 */
public static boolean istVollkommen(long zahl){
  long i, teilersumme = 0;
  for(i = 1; i <= zahl/2; i++)
	if (zahl % i == 0)
	  teilersumme += i;
  return(teilersumme == zahl);
}

public static void main(String[] args){
  System.out.println("AlgDs WS99 Aufgabe 8, Christian Semrau 06.12.1999");
  System.out.println("Bestimmt, ob eine Zahl vollkommen ist.");

  System.out.print("Zahl:"); long zahl = IOUtils.readLong();
  if(zahl <= 0){
	for(zahl = 1; zahl <= 1000; zahl++)
	  if (istVollkommen(zahl))
		System.out.println(zahl + " ist vollkommen");
  }else
	System.out.println(zahl + " ist "
	+ (istVollkommen(zahl) ? "" : "nicht ") + "vollkommen");
}
} // class Aufg8