← Назад к вопросам
Проверка числа Армстронга
1.6 Junior🔥 81 комментариев
#Основы Java
Условие
Напишите Java-программу для проверки, является ли число числом Армстронга.
Число Армстронга — это число, равное сумме своих цифр, каждая из которых возведена в степень количества цифр в числе.
Примеры
- 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153 → число Армстронга
- 370 = 3³ + 7³ + 0³ = 27 + 343 + 0 = 370 → число Армстронга
- 123 = 1³ + 2³ + 3³ = 1 + 8 + 27 = 36 ≠ 123 → не число Армстронга
- 9474 = 9⁴ + 4⁴ + 7⁴ + 4⁴ = 6561 + 256 + 2401 + 256 = 9474 → число Армстронга
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Подход
Преобразуем число в строку для подсчёта количества цифр. Затем проходим по каждой цифре, возводим в степень (количество цифр) и суммируем. Сравниваем результат с исходным числом.
Решение
public class ArmstrongNumberChecker {
public static boolean isArmstrongNumber(int number) {
if (number < 0) {
return false;
}
String numStr = String.valueOf(number);
int numDigits = numStr.length();
int sum = 0;
for (char digit : numStr.toCharArray()) {
int digitValue = digit - '0';
sum += Math.pow(digitValue, numDigits);
}
return sum == number;
}
public static boolean isArmstrongNumberLong(long number) {
if (number < 0) {
return false;
}
String numStr = String.valueOf(number);
int numDigits = numStr.length();
long sum = 0;
for (char digit : numStr.toCharArray()) {
int digitValue = digit - '0';
sum += Math.pow(digitValue, numDigits);
}
return sum == number;
}
public static void findAllArmstrongNumbers(int limit) {
System.out.println("Числа Армстронга до " + limit + ":");
for (int i = 0; i <= limit; i++) {
if (isArmstrongNumber(i)) {
System.out.print(i + " ");
}
}
System.out.println();
}
public static void verifyArmstrong(int number) {
String numStr = String.valueOf(number);
int numDigits = numStr.length();
System.out.println("Проверка числа: " + number);
System.out.println("Количество цифр: " + numDigits);
System.out.print("Вычисление: ");
long sum = 0;
StringBuilder calculation = new StringBuilder();
for (int i = 0; i < numStr.length(); i++) {
int digit = numStr.charAt(i) - '0';
long power = (long) Math.pow(digit, numDigits);
sum += power;
if (i > 0) calculation.append(" + ");
calculation.append(digit).append("^").append(numDigits)
.append(" = ").append(power);
}
System.out.println(calculation);
System.out.println("Сумма: " + sum);
System.out.println("Результат: " + (sum == number ? "ДА" : "НЕТ"));
}
public static void main(String[] args) {
int[] examples = {153, 370, 123, 9474, 1, 10, 9};
for (int num : examples) {
verifyArmstrong(num);
System.out.println();
}
}
}
Сложность
- Временная сложность: O(d^2), где d - количество цифр
- Пространственная сложность: O(d) для строки
Примеры
- 153: 1^3 + 5^3 + 3^3 = 153 ✓
- 370: 3^3 + 7^3 + 0^3 = 370 ✓
- 9474: 9^4 + 4^4 + 7^4 + 4^4 = 9474 ✓
- 123: 1^3 + 2^3 + 3^3 = 36 ✗
Edge cases
- Отрицательные числа: false
- Ноль: true (0^1 = 0)
- Однозначные: все от 1-9 - палиндромы
- Большие числа: используйте long