/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\ * Name: COS 126 Staff * * Login: cos126 * * Precept: P00 * * * * Description: Calculates the period of an aliquot sequence. * * * * Dependencies: Perfect.java * \* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ public class Cuddly { // maximum number of steps to use when searching for periods private static final int MAX = 30; // calculates the period of an aliquot sequence public static int aPeriod(int n) { int current = n; for (int count = 1; count <= MAX; count++) { current = Perfect.aliquot(current); if (current == n) return count; if (current == 0) return -1; } // if we haven't found n or 0 after MAX steps, return -1 return -1; } // returns true if a number is sociable (aliquot cycle > 2) public static boolean isSociable(int n) { return aPeriod(n) > 2; } // returns true if a number is cuddly (perfect, amicable, or sociable) public static boolean isCuddly(int n) { return aPeriod(n) != -1; } }