/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
 * Name: COS 126 Staff                                                       *
 * Login: cos126                                                             *
 * Precept: P00                                                              *
 *                                                                           *
 * Description: Provides 3 functions related to aliquot sums.                *
 *                                                                           *
 * Dependencies: None.                                                       *
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

public class Perfect {
    
    // returns the aliquot sum of n
    public static int aliquot(int n) {
        int aliquotSum = 0;
        
        // check (1, 2, ..., n/2) for factors of n
        for (int i = 1; i <= n/2; i++)
            if (n % i == 0) aliquotSum += i;
        
        return aliquotSum;
    }
    
    // returns true if n is a perfect number, false otherwise
    public static boolean isPerfect(int n) {
        return n == aliquot(n);
    }
    
    // returns true if n is an amicable number, false otherwise
    public static boolean isAmicable(int n) {
        int aliquotN = aliquot(n);
        return n != aliquotN && n == aliquot(aliquotN);
    }
}