Scrivi la classe PerfectNumber utile per individuare i numeri perfetti. La classe deve esportare i metodi seguenti:
public static boolean isPerfect(int n): ritorna true se n è un numero perfetto, false altrimenti
public static boolean isDefective(int n): ritorna true se n è un numero difettivo, false altrimenti
public static int[] getDividers(int n): ritorna un array contenente l’elenco dei divisori propri di n
public static long getDividersSum(int[] dividers): ritorna la somma dei numeri contenuti nell’array dividers
public static int[] getPerfectNumbers(int min, int max): ritorna un array contenente l’elenco dei numeri perfetti presenti nell’intervallo [min, max]
public static int[] getDefectiveNumbers(int min, int max): ritorna un array contenente l’elenco dei numeri difettivi presenti nell’intervallo [min, max]
public static int[] getAbundantNumbers(int min, int max): ritorna un array contenente l’elenco dei numeri abbondanti presenti nell’intervallo [min, max]
Un numero N è detto perfetto se la somma dei suoi divisori propri (positivi, N escluso)  è pari ad N. Ad esempio 28 è un numero perfetto perché sommando i suoi divisori propri (1, 2, 4, 7 e 14) si ottiene 28.
Invece se la somma dei divisori di N è inferiore al suo valore, N è un numero difettivo, mentre se le somma dei divisori è superiore, N è un numero abbondante.