Ниже приведены несколько способов проверки чисел Армстронга в Java:
Метод 1: использование функции Math.pow()
public static boolean isArmstrongNumber(int number) {
int originalNumber = number;
int n = String.valueOf(number).length();
int sum = 0;
while (number > 0) {
int digit = number % 10;
sum += Math.pow(digit, n);
number /= 10;
}
return sum == originalNumber;
}
Метод 2: использование метода power() из класса java.lang.Math
import java.lang.Math;
public static boolean isArmstrongNumber(int number) {
int originalNumber = number;
int n = String.valueOf(number).length();
int sum = 0;
while (number > 0) {
int digit = number % 10;
sum += Math.pow(digit, n);
number /= 10;
}
return sum == originalNumber;
}
Метод 3. Использование цикла for и преобразование числа в строку
public static boolean isArmstrongNumber(int number) {
String strNumber = String.valueOf(number);
int n = strNumber.length();
int sum = 0;
for (int i = 0; i < n; i++) {
int digit = Character.getNumericValue(strNumber.charAt(i));
sum += Math.pow(digit, n);
}
return sum == number;
}
Метод 4. Использование массива для хранения отдельных цифр
public static boolean isArmstrongNumber(int number) {
int originalNumber = number;
int n = String.valueOf(number).length();
int[] digits = new int[n];
int sum = 0;
for (int i = n - 1; i >= 0; i--) {
digits[i] = number % 10;
number /= 10;
}
for (int digit : digits) {
sum += Math.pow(digit, n);
}
return sum == originalNumber;
}
Метод 5. Использование рекурсии
public static boolean isArmstrongNumber(int number) {
int originalNumber = number;
int n = String.valueOf(number).length();
int sum = calculateSumOfDigits(number, n);
return sum == originalNumber;
}
private static int calculateSumOfDigits(int number, int n) {
if (number == 0) {
return 0;
}
int digit = number % 10;
return (int) Math.pow(digit, n) + calculateSumOfDigits(number / 10, n);
}