Число Армстронга в C
Существуют различные категории чисел на основе некоторого набора правил, например, если число делится на два, то это четное число, в противном случае оно будет нечетным числом. Возможных категорий может быть больше, таких как простое число, составное число, двойное простое число и многое другое. Среди них есть специальные типы чисел, известные как числа Армстронга.
Для числа, если сумма всех цифр в их возведенной степени, равная длине числа, равна самому числу, то это число будет числом Армстронга.
Возьмем пример 407:
-> Длина 407 равна 3, и если мы возьмем сумму всех его цифр в степени 3, то это будет 4*4*4 + 0*0*0 + 7*7*7 = 64 + 0 + 343 = 407. Поскольку мы получаем результат, равный 407, который является нашим исходным числом, это означает, что 407 является числом Армстронга.
Мы обсудим два алгоритма:
- Чтобы найти данное число является числом Армстронга или нет.
- Найдите количество чисел Армстронга в заданном диапазоне.
Число является числом Армстронга или нет
Этапы алгоритма:
- Найдите длину заданного числа с помощью цикла while.
- Создайте переменную для хранения количества цифр в заданном числе.
- Запустите цикл while, пока текущее число не станет равным нулю, и продолжайте делить текущее число на 10 и увеличивать переменную count, чтобы подсчитать количество цифр в числе.
- Теперь создайте переменную для хранения суммы степеней каждой цифры и инициализируйте ее нулем.
- Запустите цикл while, пока текущее число не станет равным нулю, и продолжайте делить текущее число на 10. В этом процессе последнюю цифру текущего числа можно получить, используя current_number % 10.
- Добавление last_digit, возведенного в степень длины числа, приводит к созданию переменной для хранения общей суммы.
- Наконец, проверьте, равна ли общая сумма заданному числу, тогда данное число является числом Армстронга, иначе нет.
Давайте рассмотрим пример реализации описанного выше подхода для лучшего понимания:
include
include
// создаем дополнительную переменную для хранения начального числа
интервал temp_n = n;
// сохраняем количество цифр n в count
количество счетчиков = 0;
temp_n = temp_n / 10; // продолжаем делить на 10
// когда temp_n снова становится равным нулю, присваиваем ему n
// находим искомую сумму
// a содержит последнюю цифру
int a = temp_n % 10;
// сохраняем сумму степеней отдельных цифр в переменной sum
сумма += pow(a, count);
temp_n = temp_n / 10; // продолжаем делить
// если сумма равна n, число является числом Армстронга
printf(«%d — число Армстронга.», n);
printf(«%d не является числом Армстронга.», n);
Выход:
407 — это число Армстронга.
Временная сложность
В приведенном выше подходе мы продолжаем делить текущее число на 10, пока оно не станет нулем, то есть log10(N) раз. После этого для каждой цифры мы возвели их мощность в число цифр, то есть log10(N).
Итак, окончательная сложность, если O(log10(N))2.
Космическая сложность
В приведенном выше подходе мы не использовали дополнительное пространство. Таким образом, пространственная сложность равна O(1).
Количество чисел Армстронга в заданном диапазоне
Этапы алгоритма:
- Во-первых, мы реализуем цикл for между заданным диапазоном.
- Мы создадим функцию для проверки, является ли текущее число числом Армстронга или нет.
- В функции мы будем реализовывать подход, который мы обсуждали выше.
- На каждой итерации цикла for мы просто будем передавать текущее число, и если это число Армстронга, то мы будем печатать его как число Армстронга.
- Также мы собираемся вести подсчет общего количества чисел Армстронга.
Давайте посмотрим на пример вышеприведенного подхода для лучшего понимания:
include
include
// функция для проверки, является ли число Армстронгом или нет
bool is_armstrong (int n)
// создаем дополнительную переменную для хранения начального числа
интервал temp_n = n;
// сохраняем количество цифр n в count
количество счетчиков = 0;
temp_n = temp_n / 10; // продолжаем делить на 10
// когда temp_n снова становится равным нулю, присваиваем ему n
// находим искомую сумму
// a содержит последнюю цифру
int a = temp_n % 10;
// сохраняем сумму степеней отдельных цифр в переменной sum
сумма += pow(a, count);
temp_n = temp_n / 10; // продолжаем делить
// если сумма равна n, вернуть true
интервал начало = 100, конец = 1000;
printf(«Вывести все числа Армстронга между %d и %d:
«,start,end);
// для проверки того, является ли каждое число числом Армстронга или нет, проходя по ним цикл
// кроме того, мы будем вести подсчет количества чисел Армстронга
количество счетчиков = 0;
for(int i = start; i
// вызов функции для проверки, является ли текущий номер Армстронгом или нет
если (is_armstrong (я))
printf(«Число Армстронга:%d
«, i);
printf(«Всего %d число является числом Армстронга от 1 до 1000.», count );
Выход:
Выведите все числа Армстронга от 100 до 1000:
Номер Армстронга: 370
Номер Армстронга: 371
Номер Армстронга: 407
Общее число 3 — это число Армстронга от 1 до 1000.
Временная сложность
В описанном выше подходе мы перебираем все числа, которые занимают O(N) время, где N — количество элементов в диапазоне. Кроме того, как мы видели в предыдущем разделе, для числа M временная сложность, чтобы проверить, является ли это числом Армстронга или нет, занимает O(log10(M))2.
Итак, окончательная сложность, если N*O(log10(N))2.
Космическая сложность
В приведенном выше подходе мы не использовали дополнительное пространство. Таким образом, пространственная сложность равна O(1).
Заключение
- Для числа, если сумма всех цифр в их возведенной степени, равная длине числа, равна самому числу, то это число будет числом Армстронга.
- Сложность времени, чтобы найти число Армстронга или нет, составляет O(log10(N))2.
- Пространственная сложность для нахождения числа Армстронга или нет составляет O(1).
- Ноль также является числом Армстронга.
- Вы можете обратиться к этой [статье Скейлера] (https://www.scaler.com/topics/armstrong-number-in-c/), чтобы подробно рассмотреть все понятия, связанные с числами Армстронга в c.
Числа Армстронга
3. Числа Армстронга. Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 1^3 + 5^3 + 3^3. Найдите все трёхзначные и четырёхзначные числа Армстронга.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Числа Армстронга
Натуральное число, в записи которого n цифр, называется числом Армстронга, если сумма его цифр.
Числа Армстронга на промежутке
Здравствуйте, нужна помощь с задачей. Требуется написать программу, которая находит все числа.
Найти все числа Армстронга
Натуральное число в записи которого n цифр называется числом Армстронга если сумму его цифр.
Определение числа Армстронга на промежутке от 1 до N
Текст задачи: Для заданного натурального N найти все числа Армстронга. Числом Армстронга.
4460 / 3213 / 1125
Регистрация: 21.03.2016
Сообщений: 7,950
Сообщение было отмечено mik-a-el как решение
Решение
1 2 3 4 5 6 7 8 9 10 11
def arm(num): num_sum = 0 n = len(str(num)) while num: num_sum += (num%10)**n num //= 10 return num_sum for num in range(100,10000): if num == arm(num): print(num)
Регистрация: 29.01.2019
Сообщений: 278
Спасибо большое))
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Найти все числа Армстронга от 1 до к
Натуральное число, в записи которого n цифр, называется числом Армстронга, если сумма его цифр.
Найти все числа Армстронга на отрезке
Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в K -ю степень.
Найти все трёхзначные и четырёхзначные числа Армстронга
Найдите все трёхзначные и четырёхзначные числа Армстронга. Числом Армстронга считается натуральное.
Найдите все трёхзначные и четырёхзначные числа Армстронга
Число Армстронга. Числом Армстронга считается натуральное число, сумма цифр которого, возведенных в.
Найти все числа Армстронга из двух и трех цифр
Число из n цифр называется числом Армстронга, если сумма его цифр в степени n равна самому числу.
Число Армстронга
Вводится последовательность из N целых положительных элементов. Определить, содержит ли.
Найте все трехзначные Армстронга
Натуральное число называется числом Армстронга, если сумма цифр числа, возведённых в N-ную степень.
Или воспользуйтесь поиском по форуму:
Поляков-Еремин: Задачи к § 58 «Циклы»
Напишите программу, которая вводит два целых числа и находит их произведение, не используя операцию умножения. Учтите, что числа могут быть отрицательными.
Входные данные
Входная строка содержит два целых числа.
Выходные данные
Программа должна вывести произведение введённых чисел.
Входные данные
6 12
Выходные данные
Входные данные
-7 15
Выходные данные
Сдать: для сдачи задач необходимо войти в систему
Ограничения
2 сек.
64 MiB
Список задач
Вы используете гостевой доступ (Вход)
Эта страница: General type: incourse. Context Условия задач: Задачи к § 58 «Циклы» (context id 87314). Page type mod-statements-view.
Числа Армстронга
Самовлюблённое число, или совершенный цифровой инвариант (англ. pluperfect digital invariant, PPDI ) или число Армстронга — натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр. Иногда чтобы считать число таковым, достаточно, чтобы степени, в которые возводятся цифры, были равны m — тогда число можно назвать m-самовлюблённым.
Например, десятичное число 153 — число Армстронга, потому что
1 3 + 5 3 + 3 3 = 153.
Формальное определение [ править ]
Пусть . d_1″ /> в системе счисления с основанием b.
Если при некотором m случится так, что , то n можно назвать истинным числом Армстронга.
- Википедия:Статьи со ссылками на статьи об отдельных числах
- Целочисленные последовательности