Числа Армстронга в интервале на Java — программа с циклом

Эта задача объединяет идеи из задач 39 и 40: пробегаем все числа в заданном интервале и проверяем каждое на свойство Армстронга.

Пример: числа Армстронга между двумя целыми

Для каждого числа в диапазоне сначала считается количество цифр, затем вычисляется сумма цифр, возведённых в эту степень, и результат сравнивается с самим числом.

class Main {
  public static void main(String[] args) {

    int low = 999, high = 99999;

    for(int number = low + 1; number < high; ++number) {
      int digits = 0;
      int result = 0;
      int originalNumber = number;

      // number of digits calculation
      while (originalNumber != 0) {
        originalNumber /= 10;
        ++digits;
      }

      originalNumber = number;

      // result contains sum of nth power of its digits
      while (originalNumber != 0) {
        int remainder = originalNumber % 10;
        result += Math.pow(remainder, digits);
        originalNumber /= 10;
      }

      if (result == number) {
        System.out.print(number + " ");
      }
    }
  }
}

Вывод:

1634 8208 9474 54748 92727 93084

В этой программе проверяется каждое число между low и high.

Важно

После каждой проверки переменные digits и result нужно сбрасывать в 0 — иначе значения накопятся от предыдущих чисел и результат будет неверным.