import java.util.stream.IntStream;
final class NaturalNumber {
private final int naturalNumber;
NaturalNumber(int naturalNumber) {
if (naturalNumber <= 0) throw new IllegalArgumentException("You must supply a natural number (positive integer)");
this.naturalNumber = naturalNumber;
}
Classification getClassification() {
final int aliquotSum = computeAliquotSum();
if (aliquotSum == naturalNumber) {
return Classification.PERFECT;
} else if (aliquotSum > naturalNumber) {
return Classification.ABUNDANT;
} else {
return Classification.DEFICIENT;
}
}
private int computeAliquotSum() {
return IntStream.range(1, naturalNumber)
.filter(it -> naturalNumber % it == 0)
.sum();
}
}