Как найти числа Армстронга в Java: изучение различных методов

Чтобы найти числа Армстронга в Java, вы можете использовать несколько методов. Число Армстронга — это число, равное сумме его цифр, возведенной в степень количества цифр. Вот несколько подходов, которые вы можете использовать:

Метод 1: использование цикла

public static boolean isArmstrong(int number) {
    int originalNumber = number;
    int numDigits = String.valueOf(number).length();
    int sum = 0;
    while (number != 0) {
        int digit = number % 10;
        sum += Math.pow(digit, numDigits);
        number /= 10;
    }
    return sum == originalNumber;
}
public static void findArmstrongNumbers(int limit) {
    for (int i = 0; i <= limit; i++) {
        if (isArmstrong(i)) {
            System.out.println(i);
        }
    }
}

Метод 2: использование рекурсии

public static boolean isArmstrong(int number) {
    int originalNumber = number;
    int numDigits = String.valueOf(number).length();
    int sum = calculateSum(number, numDigits);
    return sum == originalNumber;
}
public static int calculateSum(int number, int numDigits) {
    if (number == 0) {
        return 0;
    }
    int digit = number % 10;
    int power = (int) Math.pow(digit, numDigits);
    return power + calculateSum(number / 10, numDigits);
}
public static void findArmstrongNumbers(int limit) {
    for (int i = 0; i <= limit; i++) {
        if (isArmstrong(i)) {
            System.out.println(i);
        }
    }
}

Метод 3: использование потоков (Java 8+)

import java.util.stream.IntStream;
public static boolean isArmstrong(int number) {
    int originalNumber = number;
    int numDigits = String.valueOf(number).length();
    int sum = String.valueOf(number)
            .chars()
            .map(Character::getNumericValue)
            .map(digit -> (int) Math.pow(digit, numDigits))
            .sum();
    return sum == originalNumber;
}
public static void findArmstrongNumbers(int limit) {
    IntStream.rangeClosed(0, limit)
            .filter(Test::isArmstrong)
            .forEach(System.out::println);
}

Чтобы найти числа Армстронга, вы можете использовать любой из этих методов. В первом методе используется цикл, во втором — рекурсия, а в третьем — API Java 8 Stream.