
public class NumberPersonalities2 {

    public static void main(String[] args) {
        int limit = 100;
        int number = 0;
        while (number < 100) {
            number = number + 1;
            System.out.print(number + "    ");
            
            prime(number);
            happy(number);
            triangular(number);
            square(number);
            smug(number);
            honest(number);
        }

    }

    private static boolean prime(int number) {
        int divisor = 2;
        if (number == 1) return false;
        while (divisor < number) {
            if (number % divisor == 0) {
                System.out.print("composite, ");
                return false;
            }
            divisor = divisor + 1;
        }
        System.out.print("prime, ");
        return true;
    }

    private static boolean happy(int number) {
        int sum;
        while (true) {
            sum = 0;
            while (number > 0) {
                int digit = number % 10;
                number = number / 10;
                sum = sum + digit * digit;
            }
            if (sum == 1) {
                System.out.print("happy, ");
                return true;
            }
            if (sum == 4) {
                System.out.print("unhappy, ");
                return false;
            }
            number = sum;
        }
    }

    private static boolean triangular(int number) {
        int subtract = 1;
        while (number > 0) {
            number = number - subtract;
            subtract = subtract + 1;
        }
        if (number == 0) {
            System.out.print("triangular, ");
            return true;
        }
        else {
            System.out.print("not triangular, ");
            return false;
        }
    }

    private static boolean square(int number) {
        int subtract = 1;
        while (number > 0) {
            number = number - subtract;
            subtract = subtract + 2;
        }
        if (number == 0) {
            System.out.print("square, ");
            return true;
        }
        else {
            System.out.print("not square, ");
            return false;
        }
    }

    private static boolean smug(int number) {
        int n = 1;
        int square = n * n;
        while (number > square) {
            if (square(number - square)) {
                System.out.print("smug, ");
                return true;
            }
            n = n + 1;
            square = n * n;
        }
        System.out.print("not smug, ");
        return false;
    }

    private static boolean honest(int number) {
        int divisor = 2;
        while (divisor < number) {
            int quotient = number / divisor;
            if ((number / divisor == divisor) &&
                    quotient * quotient != number) {
                System.out.println("dishonest");
                return false;
            }
            divisor = divisor + 1;
        }
        System.out.println("honest");
        return true;
    }

}
