/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
* Name: COS 126 Staff *
* Login: cos126 *
* Precept: P00 *
* *
* Description: Prints info about aliquot cycles of numbers on StdIn. *
* *
* Dependencies: StdIn.java, StdOut.java, Perfect.java, Cuddly.java *
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
public class Cycle {
// prints the aliquot cycle starting at n
public static void printCycle(int n) {
int current = n;
do {
StdOut.print(current + " ");
current = Perfect.aliquot(current);
} while (current != n);
}
// read numbers from StdIn and prints info about their cuddliness
public static void main(String[] args) {
while (!StdIn.isEmpty()) {
int n = StdIn.readInt();
// no need to calculate the period more than once
int period = Cuddly.aPeriod(n);
if (period == -1) {
StdOut.println(n + " is not cuddly");
} else if (period == 1) {
StdOut.println(n + " is perfect");
} else if (period == 2) {
StdOut.print(n + " is amicable: ");
printCycle(n);
StdOut.println();
} else {
StdOut.print(n + " is sociable: ");
printCycle(n);
StdOut.println();
}
}
}
}