Advertisement
HasteBin0

Java Armstrong Number Exercise

Jul 3rd, 2017
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.94 KB | None | 0 0
  1. package armstrongnumbers;
  2.  
  3. import java.util.Objects;
  4.  
  5. final class IntegerHolder {
  6.  
  7.     private Integer x;
  8.  
  9.     public IntegerHolder() {
  10.         this.x = 0;
  11.     }
  12.  
  13.     public IntegerHolder(Integer x) {
  14.         this.x = x;
  15.     }
  16.  
  17.     public Integer getX() {
  18.         return this.x;
  19.     }
  20.  
  21.     public void setX(Integer x) {
  22.         this.x = x;
  23.     }
  24. }
  25.  
  26. final class ArmstrongNumber {
  27.  
  28.     private IntegerHolder value;
  29.     private Integer sum;
  30.  
  31.     public ArmstrongNumber(IntegerHolder value) {
  32.         this.value = value;
  33.     }
  34.  
  35.     public IntegerHolder getValue() {
  36.         return value;
  37.     }
  38.  
  39.     public Integer getSum() {
  40.         return sum;
  41.     }
  42.  
  43.     public void setValue(IntegerHolder value) {
  44.         this.value = value;
  45.     }
  46.  
  47.     public void findSum(final Integer base) {
  48.         Integer tmp = this.value.getX(), tmp_sum = 0;
  49.         do {
  50.             tmp_sum += (int) Math.pow(tmp % base, 3);
  51.             tmp /= base;
  52.         } while (tmp != 0);
  53.         this.sum = tmp_sum;
  54.     }
  55.  
  56.     public Boolean isArmstrongNumber() {
  57.         return Objects.equals(this.getValue().getX(), this.getSum());
  58.     }
  59.  
  60. }
  61.  
  62. /**
  63.  *
  64.  * @author Aidan
  65.  */
  66. public class ArmstrongNumbers {
  67.  
  68.     private static final int LOOPS = 1000, BASES = 20;
  69.  
  70.     public static void main(String[] args) {
  71.         IntegerHolder base = new IntegerHolder();
  72.         for (Integer i = 2; i <= LOOPS; i++) {
  73.             ArmstrongNumber tmp = new ArmstrongNumber(base);
  74.             base.setX(i);
  75.             for (Integer j = 2; j <= BASES; j++) {
  76.                 tmp.findSum(j);
  77.                 if (tmp.isArmstrongNumber()) {
  78.                     System.out.println("In base " + j + ", " + i + " is an Armstrong number.");
  79.                     System.out.flush();
  80.                 }
  81.             }
  82.             if (tmp.isArmstrongNumber()) {
  83.                 System.out.println();
  84.                 System.out.flush();
  85.             }
  86.         }
  87.     }
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement