Вот программа на Java, которая печатает числа Армстронга от 1 до 1000:
public class ArmstrongNumbers {
public static void main(String[] args) {
for (int number = 1; number <= 1000; number++) {
if (isArmstrong(number)) {
System.out.println(number);
}
}
}
public static boolean isArmstrong(int number) {
int originalNumber = number;
int sum = 0;
while (number > 0) {
int digit = number % 10;
sum += Math.pow(digit, getNumberOfDigits(originalNumber));
number /= 10;
}
return sum == originalNumber;
}
public static int getNumberOfDigits(int number) {
int count = 0;
while (number != 0) {
number /= 10;
count++;
}
return count;
}
}
Эта программа перебирает числа от 1 до 1000 и проверяет, является ли каждое число числом Армстронга, с помощью метода isArmstrong(). Метод isArmstrong()вычисляет сумму цифр, возведенных в степень количества цифр, с помощью метода getNumberOfDigits(). Если сумма равна исходному числу, она считается числом Армстронга.
Вот несколько альтернативных способов найти числа Армстронга:
-
Использование вложенного цикла:
- Перебор чисел от 1 до 1000.
- Из каждого числа извлеките цифры и вычислите сумму кубов.
- Если сумма равна исходному числу, выведите ее как число Армстронга.
-
Использование класса
String:- Перебор чисел от 1 до 1000.
- Преобразуйте каждое число в строку.
- Извлеките цифры из строки и вычислите сумму кубов.
- Если сумма равна исходному числу, выведите ее как число Армстронга.
-
Использование рекурсии:
- Определите рекурсивную функцию, которая принимает число в качестве аргумента.
- Если число меньше 10, проверьте, является ли это числом Армстронга, и верните результат.
- В противном случае извлеките последнюю цифру, вычислите сумму кубов и рекурсивно вызовите функцию с оставшимися цифрами.
- Если сумма равна исходному числу, выведите ее как число Армстронга.