Число Армстронга в Python – Простая реализация
Привет! Сегодня давайте узнаем кое-что Интересное, номер Армстронга. Мы бы поняли, что это за число, а затем реализовали программу, чтобы проверить, является ли число числом Армстронга или нет.
Что такое число Армстронга?
Число n цифр является числом Армстронга, если сумма каждой цифры, возведенная в степень числа без цифр, равна исходному числу.
Определение числа Армстронга : ^n + b^n + c^n + d^n + … . и так далее.
Примеры числа Армстронга
Пример 1: 153
Расчет (по цифрам^3 + 5^3 + + 125 +
Выполненный расчет непосредственно равен исходному числу. Следовательно, это число является числом Армстронга.
Пример 2: 548834
Расчет (цифра–^6 + 4^6 +8^6 + 8^6 + 3^6 + + 4096 + 262144 + 262144 + 729 +
Выполненные вычисления непосредственно равны исходному числу. Следовательно, это число является числом Армстронга.
Алгоритм проверки номера Армстронга
Чтобы проверить, является ли номер номером Армстронга, необходимо выполнить следующие действия
- Подсчитайте количество цифр в номере.
- Доступ к каждой цифре осуществляется одна за другой с помощью операций mod и division
- Каждая цифра повышается до степени числа цифр, и результат сохраняется в отдельной переменной
- Шаги 2 и 3 повторяются до тех пор, пока цифры не исчерпаются.
- Проверьте результат, рассчитанный с исходным номером
- Если он совпадает: Номер Армстронга
- В противном случае: Не номер Армстронга
Псевдокод для номера Армстронга
В приведенном ниже коде показан псевдокод для проверки того, является ли число номером Армстронга:
Реализация проверки чисел Армстронга в Python
Теперь, когда мы знаем о том, что такое число Армстронга и шаги по его реализации, давайте осуществим проверку Армстронга строка за строкой.
1. Создайте исходные переменные
Сначала мы берем вход n , а затем вычисляем длину входа. Мы также храним копию входных данных, чтобы независимо от того, насколько сильно мы изменим исходный номер, у нас была копия, чтобы позже проверить номер Армстронга. Мы также инициализировали результат как 0.
Код для того же самого показан ниже:
2. Прохождение по номеру и обновление результата
Чтобы получить доступ к каждой цифре, мы берем модуль числа ( mod 10), чтобы извлечь последнюю цифру числа. Следующий шаг включает в себя обновление результата как суммы предыдущего результата и цифры, возведенной в степень числа цифр.
Последний и последний шаг, который мы делаем, – это делим число на 10, чтобы удалить последнюю цифру из числа. Тот же процесс повторяется до тех пор, пока в номере не останется больше цифр.
Код для того же самого показан ниже:
3. Проверка, является ли номер номером Армстронга или нет
Последний шаг-проверить копию числа, которое мы создали ранее, и вычислить результат, чтобы окончательно определить, является ли это число номером Армстронга или нет. Код для того же самого показан ниже:
Выходные образцы для кода
На данный момент я протестировал программу для четырех входов. Результаты для всех четырех показаны ниже:
Число Армстронга
Пусть [math]\displaystyle< n = \sum_^k d_ib^ >[/math] — число, записываемое [math]\displaystyle< d_kd_
Если при некотором [math]\displaystyle< m >[/math] случится так, что [math]\displaystyle< n = \sum_^k
Очевидно, что при любом [math]\displaystyle< m >[/math] может существовать лишь конечное число [math]\displaystyle< m >[/math] -самовлюблённых чисел, так как, начиная с некоторого [math]\displaystyle< k >[/math] , [math]\displaystyle < k \cdot 9^k \lt 10^
Упоминания в литературе
«Существуют только четыре числа (кроме 1), равных сумме кубов цифр, например, 153 = 1 3 + 5 3 + 3 3 , 370 = 3 3 + 7 3 + 0 3 , 371 = 3 3 + 7 3 + 1 3 , 407 = 4 3 + 0 3 + 7 3 . Всё это забавные факты, весьма подходящие для газетных колонок с головоломками, способные позабавить любителей, но ничего в них не затронет сердце математика.»
Числа Армстронга в десятичной системе
В десятичной системе существует всего 88 чисел Армстронга. В промежутке 1 <= N <= 10 находятся следующие 32 N-значные числа Армстронга [3] :
Самое большое число Армстронга содержит 39 цифр: 115 132 219 018 763 992 565 095 597 973 971 522 401 .
Числа Армстронга в других системах счисления
- В троичной системе счисления [1] : 13, 23, 123, 223, 1223, …
- В четверичной системе счисления [1][4] : 14, 24, 34, 1304, 1314, 2034, 2234, 3134, 3324, 11034, 33034, …
Похожие классы чисел
Иногда терминами «самовлюблённые числа» называют любой тип чисел, которые равны некоторому выражению от их собственных цифр. Например, таковыми могут быть: совершенные и дружественные числа, числа Брауна, числа Фридмана, счастливые билеты и тому подобные.
Число Армстронга
Самовлюблённое число, или совершенный цифровой инвариант (англ. pluperfect digital invariant, PPDI или число Армстронга — натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр. Иногда чтобы считать число таковым, достаточно, чтобы степени, в которые возводятся цифры, были равны m — тогда число можно назвать m-самовлюблённым.
Например, десятичное число 153 — число Армстронга, потому что:
Содержание
Формальное определение
Пусть 
Числа Армстронга — Самовлюблённое число, или совершенный цифровой инвариант (англ. pluperfect digital invariant, PPDI) или число Армстронга натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную… … Википедия
100 (число) — 100 сто 97 · 98 · 99 · 100 · 101 · 102 · 103 70 · 80 · 90 · 100 · 110 · 120 · 130 200 · 100 · 0 · 100 · 200 · 300 · 400 Факторизация: 2×2×5×5 … Википедия
370 (число) — 370 триста семьдесят 367 · 368 · 369 · 370 · 371 · 372 · 373 340 · 350 · 360 · 370 · 380 · 390 · 400 Факторизация … Википедия
407 (число) — 407 четыреста семь 404 · 405 · 406 · 407 · 408 · 409 · 410 Факторизация: Римская запись: CDVII Двоичное: 110010111 Восьмеричное: 627 … Википедия
153 (число) — 153 сто пятьдесят три 150 · 151 · 152 · 153 · 154 · 155 · 156 Факторизация: Римская запись: CLIII Двоичное: 10011001 Восьмеричное: 231 … Википедия
371 (число) — 371 триста семьдесят один 368 · 369 · 370 · 371 · 372 · 373 · 374 Факторизация: 7×53 Римская запись: СССLXXI Двоичное: 101110011 Восьмеричное: 563 Шестнадцатеричное: 173 … Википедия
Аполлон-11 — У этого термина существуют и другие значения, см. Аполлон (значения). Аполлон 11 Эмблема … Википедия
Япония* — Содержание: I. Физический очерк. 1. Состав, пространство, береговая линия. 2. Орография. 3. Гидрография. 4. Климат. 5. Растительность. 6. Фауна. II. Население. 1. Статистика. 2. Антропология. III. Экономический очерк. 1. Земледелие. 2.… … Энциклопедический словарь Ф.А. Брокгауза и И.А. Ефрона
Числа армстронга натуральное число называется числом армстронга
Число Армстронга (также самовлюблённое число, совершенный цифровой инвариант; англ. pluperfect digital invariant, PPDI ) — натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр. Иногда, чтобы считать число таковым, достаточно, чтобы степени, в которые возводятся цифры, были равны m — тогда число можно назвать m -самовлюблённым.
Например, десятичное число 153 — число Армстронга, потому что
1 3 + 5 3 + 3 3 = 153.
Содержание
Формальное определение [ править | править код ]
Пусть n = ∑ i = 1 k d i b i − 1 <displaystyle n=sum _^ d_b^> — число, записываемое d k d k − 1 . . . d 1 <displaystyle d_ d_. d_<1>> в системе счисления с основанием b <displaystyle b> .
Если при некотором m <displaystyle m> случится так, что n = ∑ i = 1 k d i m <displaystyle n=sum _^ >^ > , то n <displaystyle n> является m <displaystyle m> -самовлюблённым числом. Если, сверх того, m = k <displaystyle m=k> , то n <displaystyle n> можно назвать истинным числом Армстронга.
Очевидно, что при любом m <displaystyle m> может существовать лишь конечное число m <displaystyle m> -самовлюблённых чисел, так как, начиная с некоторого k <displaystyle k> , k ⋅ 9 k 10 k − 1 − 1 <displaystyle kcdot 9^ .
Упоминания в литературе [ править | править код ]
«Существуют только четыре числа (кроме 1), равных сумме кубов цифр, например, 153 = 1 3 + 5 3 + 3 3 , 370 = 3 3 + 7 3 + 0 3 , 371 = 3 3 + 7 3 + 1 3 , 407 = 4 3 + 0 3 + 7 3 . Всё это забавные факты, весьма подходящие для газетных колонок с головоломками, способные позабавить любителей, но ничего в них не затронет сердце математика.»
Числа Армстронга в десятичной системе [ править | править код ]
В десятичной системе существует всего 88 чисел Армстронга. В промежутке 1 [3] :
1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54 748, 92 727, 93 084, 548 834, 1 741 725, 4 210 818, 9 800 817, 9 926 315, 24 678 050, 24 678 051, 88 593 477, 146 511 208, 472 335 975, 534 494 836, 912 985 153, 4 679 307 774.
Самое большое число Армстронга содержит 39 цифр: 115 132 219 018 763 992 565 095 597 973 971 522 401 .
Числа Армстронга в других системах счисления [ править | править код ]
- В троичной системе счисления [1] : 13, 23, 123, 223, 1223, …
- В четверичной системе счисления [1][4] : 14, 24, 34, 1304, 1314, 2034, 2234, 3134, 3324, 11034, 33034, …
Похожие классы чисел [ править | править код ]
Иногда терминами «самовлюблённые числа» называют любой тип чисел, которые равны некоторому выражению от их собственных цифр. Например, таковыми могут быть: совершенные и дружественные числа, числа Брауна, числа Фридмана, счастливые билеты и тому подобные.
Натуральное десятичное N — значное число называется числом Армстронга, если сумма его цифр, возведенных в степень N, равна самому числу.
Примеры: 153 = 1 3 + 5 3 + 3 3 ; 1634 = 1 4 + 6 4 + 3 4 + 4 4 .
Найти все числа Армстронга для 1 9 чисел и каждое число проверить. При этом на весьма солидной машине программа могла бы работать достаточно долго. Если бы цель задания заключалась только в нахождении чисел Армстронга, а не в составлении универсальной программы, разработка которой могла бы занимать большое время, то конечно, лучше было бы за 10 минут написать и 3 часа подождать.
Идея уменьшения класса исследуемых чисел заключается в следующем : можно делать перебор не самих чисел, а значений, которые могут получаться в результате степенной суммы ( т.е. суммы цифр числа, возведенных в степень числа цифр этого числа ). Здесь используется следующее свойство : от перемены цифр местами в числе степенная сумма не меняется. Т.е. например, незачем рассматривать все числа из класса : 135, 153, 315, 351, 531 и 513; достаточно рассмотреть одно из них, например, число 135; вычислить его степенную сумму : (135)ст = 153, а потом лишь убедиться в том что число 153 — это число Армстронга. Этот метод снижает число перебираемых чисел почти в N! раз. Сам же перебор осуществляется довольно просто : рассматриваются все числа, у которых любая цифра не меньше предыдущей и не больше последующей. Например: 12, 1557, 333 и т.д.
Итак, вышеописанный метод снизил число перебираемых чисел с 10 9 до приблизительно 200000. Но это не все на чем стоит остановливаться. Можно применить еще одну хитрость, которая заключается в следующем : можно значительно ускорить вычисление степенной суммы. Можно заметить, что при вычислениях часто приходится многократно возводить некоторое число в некоторую степень. Чтобы это оптимизировать вводится двухмерный массив, в i-ой строке и j-ом столбце которого находится значение степенной суммы i с основанием j (например, Degree[123,j] = 1 j + 2 j + 3 j ). Таким образом , используется значение массива Degree[i,j]. Это существенно ускоряет процесс вычисления, если это сравнивать с некоторым процессом, в котором используется функция Degree(i,j), каждый раз вычисляющая значение i j . Для вычисления выражения 10 j аналогичнo используется массив Degree10. Нужно заметить, что такая операция возведения в степень в программе вы полняется более 10000 раз; матрица Degree заполняется в начале программы, где операция возведения i в степень j выполняется около 8000 раз.


for a:=100 to 999 do begin
d:=0;
a2:=a;
while (a2 <> 0) do begin
b:= a2 mod 10;
a2:= a2 div 10;
c:= (b*b*b);
d:= d+c;
end;
if (a = d) then writeln(‘число армстронга ==> ‘, a);
end;
end.