Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package perfectnumbers;
- import java.util.ArrayList;
- import java.util.Objects;
- final class PerfectNumber {
- private final Integer number;
- private Integer factor_sum;
- private final ArrayList<Integer> factors;
- public PerfectNumber(Integer number) {
- this.number = number;
- this.factors = new ArrayList<>();
- }
- public void factor() {
- this.factors.clear();
- this.factor_sum = 0;
- //
- for (int i = 1; i < this.number; i++) {
- if (((this.number % i)) == 0) {
- this.factors.add(i);
- this.factor_sum += i;
- }
- }
- }
- public Boolean isPerfect() {
- return Objects.equals(this.getNumber(), this.getFactor_sum());
- }
- public Integer getNumber() {
- return this.number;
- }
- public Integer getFactor_sum() {
- return this.factor_sum;
- }
- public Object[] getFactors() {
- return this.factors.toArray();
- }
- @Override
- public String toString() {
- return this.getNumber().toString();
- }
- public void display_perfect() {
- System.out.println(
- "The number "
- + this
- + (this.isPerfect() ? " is" : " isn't")
- + " a perfect number."
- );
- System.out.flush();
- }
- public void display_factors() {
- System.out.print("The number " + this + " has the factors ");
- display(this.getFactors());
- System.out.println(", summing to " + this.getFactor_sum() + ".");
- System.out.flush();
- }
- public static void display(final Object... values) {
- switch (values.length) {
- case 0: {
- System.out.print("<None>");
- break;
- }
- case 1: {
- System.out.print(values[0]);
- break;
- }
- case 2: {
- System.out.print(values[0] + " and " + values[1]);
- break;
- }
- default: {
- for (int i = 0; i < values.length - 1; i++) {
- System.out.print(i + ", ");
- }
- System.out.print("and " + values[values.length - 1]);
- }
- }
- System.out.flush();
- }
- }
- /**
- *
- * @author Aidan
- */
- public class PerfectNumbers {
- private static final int LOOPS = 10000;
- public static void main(String[] args) {
- ArrayList<PerfectNumber> tmp = new ArrayList<>();
- tmp.ensureCapacity(LOOPS);
- for (int i = 0; i < LOOPS; i++) {
- tmp.add(new PerfectNumber(i));
- }
- System.out.print("We have the numbers 1 through " + LOOPS + " inclusive.\n");
- System.out.flush();
- for (int i = 0; i < LOOPS; i++) {
- tmp.get(i).factor();
- }
- System.out.println();
- System.out.flush();
- for (int i = 0; i < LOOPS; i++) {
- if (tmp.get(i).isPerfect()) {
- tmp.get(i).display_factors();
- }
- }
- System.out.println();
- System.out.flush();
- for (int i = 0; i < LOOPS; i++) {
- if (tmp.get(i).isPerfect()) {
- tmp.get(i).display_perfect();
- }
- }
- System.out.println();
- System.out.flush();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement