Числа Армстронга в интервале на 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 — иначе значения накопятся от предыдущих чисел и результат будет неверным.