Нарциссическое число

Целое число, выраженное как сумма своих цифр, каждая из которых возведена в степень, равную количеству цифр.

В теории чисел нарциссическое число [1] [2] (также известное как плюсквамперфектный цифровой инвариант ( PPDI ) [3] число Армстронга [4] (в честь Майкла Ф. Армстронга) [5] или плюсовое совершенное число ) [6] в данной системе счисления — это число, которое является суммой своих собственных цифр, каждая из которых возведена в степень количества цифр. б {\displaystyle б}

Определение

Пусть будет натуральным числом. Определим нарциссическую функцию для базы следующим образом: н {\displaystyle n} б > 1 {\displaystyle б>1} Ф б : Н Н {\displaystyle F_{b}:\mathbb {N} \rightarrow \mathbb {N} }

Ф б ( н ) = я = 0 к 1 г я к . {\displaystyle F_{b}(n)=\sum _{i=0}^{k-1}d_{i}^{k}.}

где - количество цифр в числе в базе , а к = бревно б н + 1 {\displaystyle k=\lfloor \log _{b}{n}\rfloor +1} б {\displaystyle б}

г я = н мод б я + 1 н мод б я б я {\displaystyle d_{i}={\frac {n{\bmod {b^{i+1}}}-n{\bmod {b}}^{i}}{b^{i}}}}

— значение каждой цифры числа. Натуральное число является нарциссическим числом, если оно является фиксированной точкой для , что происходит, если . Натуральные числа являются тривиальными нарциссическими числами для всех , все остальные нарциссические числа являются нетривиальными нарциссическими числами . н {\displaystyle n} Ф б {\displaystyle F_{b}} Ф б ( н ) = н {\displaystyle F_{b}(n)=n} 0 н < б {\displaystyle 0\leq n<b} б {\displaystyle б}

Например, число 153 по основанию является нарциссическим числом, потому что и . б = 10 {\displaystyle b=10} к = 3 {\displaystyle к=3} 153 = 1 3 + 5 3 + 3 3 {\displaystyle 153=1^{3}+5^{3}+3^{3}}

Натуральное число является общительным нарциссическим числом, если оно является периодической точкой для , где для положительного целого числа (здесь - -я итерация ) , и образует цикл с периодом . Нарциссическое число является общительным нарциссическим числом с , а дружественное нарциссическое число является общительным нарциссическим числом с . н {\displaystyle n} Ф б {\displaystyle F_{b}} Ф б п ( н ) = н {\displaystyle F_{b}^{p}(n)=n} п {\displaystyle p} Ф б п {\displaystyle F_{b}^{p}} п {\displaystyle p} Ф б {\displaystyle F_{b}} п {\displaystyle p} п = 1 {\displaystyle p=1} п = 2 {\displaystyle p=2}

Все натуральные числа являются предпериодическими точками для , независимо от основания. Это происходит потому, что для любого заданного количества цифр минимально возможное значение равно , максимально возможное значение равно , а значение нарциссической функции равно . Таким образом, любое нарциссическое число должно удовлетворять неравенству . Умножая все стороны на , получаем , или, что эквивалентно, . Поскольку , это означает, что будет максимальное значение , где , из-за экспоненциальной природы и линейности . За пределами этого значения , всегда. Таким образом, существует конечное число нарциссических чисел, и любое натуральное число гарантированно достигнет периодической точки или фиксированной точки, меньшей , что делает его предпериодической точкой. Установка равной 10 показывает, что наибольшее нарциссическое число в основании 10 должно быть меньше . [1] н {\displaystyle n} Ф б {\displaystyle F_{b}} к {\displaystyle к} н {\displaystyle n} б к 1 {\displaystyle b^{k-1}} н {\displaystyle n} б к 1 б к {\displaystyle b^{k}-1\leq b^{k}} Ф б ( н ) = к ( б 1 ) к {\displaystyle F_{b}(n)=k(b-1)^{k}} б к 1 к ( б 1 ) к б к {\displaystyle b^{k-1}\leq k(b-1)^{k}\leq b^{k}} б ( б 1 ) к {\displaystyle {\frac {b}{(b-1)^{k}}}} ( б б 1 ) к б к б ( б б 1 ) к {\displaystyle {\left({\frac {b}{b-1}}\right)}^{k}\leq bk\leq b{\left({\frac {b}{b-1}}\right)}^{k}} к ( б б 1 ) к б к {\displaystyle k\leq {\left({\frac {b}{b-1}}\right)}^{k}\leq bk} б б 1 1 {\displaystyle {\frac {b}{b-1}}\geq 1} к {\displaystyle к} ( б б 1 ) к б к {\displaystyle {\left({\frac {b}{b-1}}\right)}^{k}\leq bk} ( б б 1 ) к {\displaystyle {\left({\frac {b}{b-1}}\right)}^{k}} б к {\displaystyle бк} к {\displaystyle к} Ф б ( н ) н {\displaystyle F_{b}(n)\leq n} б к 1 {\displaystyle b^{k}-1} б {\displaystyle б} 10 60 {\displaystyle 10^{60}}

Число итераций, необходимых для достижения фиксированной точки, является устойчивостью нарциссической функции и не определено, если она никогда не достигает фиксированной точки. я {\displaystyle я} Ф б я ( н ) {\displaystyle F_{b}^{i}(n)} н {\displaystyle n}

База имеет по крайней мере одно двузначное нарциссическое число тогда и только тогда, когда не является простым числом, а количество двузначных нарциссических чисел в базе равно , где — количество положительных делителей числа . б {\displaystyle б} б 2 + 1 {\displaystyle б^{2}+1} б {\displaystyle б} τ ( б 2 + 1 ) 2 {\displaystyle \tau (b^{2}+1)-2} τ ( н ) {\displaystyle \тау (н)} н {\displaystyle n}

Каждая база , которая не кратна девяти, имеет по крайней мере одно трехзначное нарциссическое число. Базы, которые не являются б 3 {\displaystyle b\geq 3}

2, 72, 90, 108, 153, 270, 423, 450, 531, 558, 630, 648, 738, 1044, 1098, 1125, 1224, 1242, 1287, 1440, 1503, 1566, 1611, 1620, 1800, 1935, ... (последовательность A248970 в OEIS )

В десятичной системе счисления всего 88 нарциссических чисел, из которых самое большое —

115 132 219 018 763 992 565 095 597 973 971 522 401

с 39 цифрами. [1]

Нарциссические числа и циклыФбдля конкретныхб

Все числа представлены в системе счисления с основанием . «#» — длина каждой известной конечной последовательности. б {\displaystyle б}

б {\displaystyle б} Нарциссические числа#ЦиклыПоследовательность(и) OEIS
20, 12 {\displaystyle \varnothing}
30, 1, 2, 12, 22, 1226 {\displaystyle \varnothing}
40, 1, 2, 3, 130, 131, 203, 223, 313, 332, 1103, 330312 {\displaystyle \varnothing} А010344 и А010343
50, 1, 2, 3, 4, 23, 33, 103, 433, 2124, 2403, 3134, 124030, 124031, 242423, 434434444, ...18

1234 → 2404 → 4103 → 2323 → 1234

3424 → 4414 → 11034 → 20034 → 20144 → 31311 → 3424

1044302 → 2110314 → 1044302

1043300 → 1131014 → 1043300

А010346
60, 1, 2, 3, 4, 5, 243, 514, 14340, 14341, 14432, 23520, 23521, 44405, 435152, 5435254, 12222215, 555435035...31

44 → 52 → 45 → 105 → 330 → 130 → 44

13345 → 33244 → 15514 → 53404 → 41024 → 13345

14523 → 32253 → 25003 → 23424 → 14523

2245352 → 3431045 → 2245352

12444435 → 22045351 → 30145020 → 13531231 → 12444435

115531430 → 230104215 → 115531430

225435342 → 235501040 → 225435342

А010348
70, 1, 2, 3, 4, 5, 6, 13, 34, 44, 63, 250, 251, 305, 505, 12205, 12252, 13350, 13351, 15124, 36034, 205145, 1424553, 143355 4, 3126542, 4355653, 6515652, 125543055, ...60А010350
80, 1, 2, 3, 4, 5, 6, 7, 24, 64, 134, 205, 463, 660, 661, 40663, 42710, 42711, 60007, 62047, 636703, 3352072, 3352272, ...63А010354 и А010351
90, 1, 2, 3, 4, 5, 6, 7, 8, 45, 55, 150, 151, 570, 571, 2446, 12036, 12336, 14462, 2225764, 6275850, 6275851, 12742452, ...59А010353
100, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834, ...88А005188
110, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, 56, 66, 105, 307, 708, 966, А06, А64, 8009, 11720, 11721, 12470, ...135А0161948
120, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, Б, 25, А5, 577, 668, А83, 14765, 938А4, 369862, А2394А, ...88А161949
130, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, 14, 36, 67, 77, А6, С4, 490, 491, 509, В85, 3964, 22593, 5В350, ...202А0161950
140, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, Б, В, Г, 136, 409, 74AB5, 153A632, ...103А0161951
150, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, 78, 88, C3A, D87, 1774, E819, E829, 7995C, 829BB, A36BC, ...203А0161952
160, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 156, 173, 208, 248, 285, 4A5, 5B0, 5B1, 60B, 64B, 8C0, 8C1, 99A, AA9, AC3, CA8, E69, EA0, EA1, B8D2, 13579, 2B702, 2B722, 5A07C, 5A47C, C00E0, C00E1, C04E0, C04E1, C60E7, C64E7, C80E0 , C80E1, C84E0, С84Е1, ...294А161953

Расширение на отрицательные целые числа

Нарциссические числа можно расширить до отрицательных целых чисел, используя знаковое цифровое представление для представления каждого целого числа.

Пример программирования

Питон

В приведенном ниже примере реализована нарциссическая функция, описанная в определении выше, для поиска нарциссических функций и циклов в Python .

def  ppdif ( x ,  b ):  y  =  x  digit_count  =  0  while  y  >  0 :  digit_count  =  digit_count  +  1  y  =  y  //  b  total  =  0  while  x  >  0 :  total  =  total  +  pow ( x  %  b ,  digit_count )  x  =  x  //  b  return  totaldef  ppdif_cycle ( x ,  b ):  seen  =  []  пока  x  не  в  seen :  seen . append ( x )  x  =  ppdif ( x ,  b )  cycle  =  []  пока  x  не  в  cycle :  cycle . append ( x )  x  =  ppdif ( x ,  b )  return  cycle

Следующая программа на Python определяет, является ли введенное целое число числом нарциссизма/Армстронга или нет.

def  no_of_digits ( num ):  i  =  0  while  num  >  0 :  num  //=  10  i += 1 вернуть  яdef  required_sum ( num ):  i  =  no_of_digits ( num )  s  =  0  пока  число  >  0 :  цифра  =  число  %  10  число  //=  10  с  +=  сила ( цифра ,  i )  вернуть  сnum  =  int ( input ( "Введите число:" )) s  =  required_sum ( num ) если  s  ==  num :  print ( "Число Армстронга" ) иначе :  print ( "Не число Армстронга" )

Ява

Следующая программа на Java определяет, является ли введенное целое число числом нарциссизма/Армстронга или нет.

импорт java.util.Scanner ; публичный класс ArmstrongNumber {    public static void main ( String [ ] args ) { Scanner in = new Scanner ( System.in ) ; System.out.println ( " Введите положительное целое число : " ) ; int number = in.nextInt ( ) ;                if ( isArmstrongNumber ( number )) { System . out . println ( number + " является числом Армстронга." ); } else { System . out . println ( number + " не является числом Армстронга." ); } }              public static boolean isArmstrongNumber ( int number ) { int sum = 0 ; String numberString = Integer.toString ( number ) ; int numberOfDigits = numberString.length ( ) ;                  для ( int i = 0 ; i < numberOfDigits ; i ++ ) { int digit = Character . getNumericValue ( numberString . charAt ( i )); sum += Math . pow ( digit , numberOfDigits ); }                   вернуть сумму == число ; } }    

С#

Следующая программа на языке C# определяет, является ли введенное целое число числом нарциссизма/Армстронга или нет.

с использованием Системы ; public class Program { public static void Main () { Console.WriteLine ( " Введите число:" ) ; int value = int.Parse ( Console.ReadLine ( ) ) ;             if ( value == RequiredSum ( value )) { Console . WriteLine ( "Число Армстронга" ); } else { Console . WriteLine ( "Не число Армстронга" ); } }             private static int CountDigits ( int num ) { int i = 0 ; for (; num > 0 ; ++ i ) num /= 10 ;                   вернуть i ; }    private static int RequiredSum ( int num ) { int count = CountDigits ( num );          int sum = 0 ; while ( num > 0 ) { sum += ( int ) Math.Pow ( num % 10 , count ) ; num / = 10 ; }                   вернуть сумму ; } }  

С

Следующая программа на языке C определяет, является ли введенное целое число числом нарциссизма/Армстронга или нет.

#include <stdio.h> #include <stdlib.h> #include <stdbool.h>   int getNumberOfDigits ( int n ); bool isArmstrongNumber ( int candidate );    int main () { int userNumber = 0 ; printf ( "Введите число, чтобы проверить, является ли оно числом Армстронга: " ); scanf ( "%d" , & userNumber ); printf ( "Является ли %d числом Армстронга?: %s \n " , userNumber , isArmstrongNumber ( userNumber ) ? "true" : "false" ); return 0 ; }                 bool isArmstrongNumber ( int candidate ) { int numberOfDigits = getNumberOfDigits ( candidate ); int sum = 0 ; for ( int i = candidate ; i != 0 ; i /= 10 ) { int num = i % 10 ; int n = 1 ; for ( int j = 0 ; j < numberOfDigits ; j ++ ) { n *= num ; } sum += n ; } return sum == candidate ; }                                                   int getNumberOfDigits ( int n ) { int sum = 0 ; while ( n != 0 ) { n /= 10 ; ++ sum ; } return sum ; }                  

С++

Следующая программа на языке C++ определяет, является ли введенное целое число числом нарциссизма/Армстронга или нет.

#include <iostream> #include <cmath> bool isArmstrong ( int n ) { //Функция floor избыточна, поскольку log10(n) + 1 всегда будет целым числом, если n положительно. Достаточно просто использовать static_cast<int>(log10(n)) + 1. //int digits = floor(log10(n) + 1); //математическая формула для поиска количества цифр в числе с любым основанием int sum = 0 ; if ( n >= 0 ) { int digits = static_cast < int > ( log10 ( n )) + 1 ; for ( int tmp = n ; tmp ; tmp /= 10 ) sum += pow ( tmp % 10 , digits ); } return sum == n ; } int main () { int n = 407 ; если ( isArmstrong ( n )) std :: cout << n << " является нарциссическим числом \n " ; иначе std :: cout << n << " не является нарциссическим числом \n " ; }                                                        

Рубин

Следующая программа на Ruby определяет, является ли введенное целое число числом нарциссизма/Армстронга или нет.

def narcissistic? ( value ) # 1 ^3 + 5 ^3 + 3 ^3 = 1 + 125 + 27 = 153 nvalue = [] nnum = value.to_s nnum.each_char do | num | nvalue << num.to_i end sum = 0 i = 0 while sum < = value nsum = 0 nvalue.each_with_index do | num , idx | nsum + = num ** i end if nsum == value return true else i + = 1 sum + = nsum end end return false end                                                     

JavaScript

Следующая программа JavaScript определяет, является ли введенное целое число числом нарциссизма/Армстронга или нет.

функция нарциссический ( число ) { const numString = number . toString (); const numDigits = numString . length ; пусть сумма = 0 ;               для ( пусть цифра из numString ) { сумма += Math . pow ( parseInt ( цифра ), numDigits ); }           вернуть сумму === число ; }   

Ржавчина

Следующая программа Rust выводит все числа Нарциссизма/Армстронга от 0 до 100 миллионов в десятичной системе счисления.

fn  is_armstrong_number ( num : u64 ) -  > bool  { let digits = num.to_string ( ) ; digits.chars ( ) . map ( | x | ( x as u64 - 0x30 ) .pow ( digits.len ( ) as u32 ) ) .sum :: <u64> ( ) == num }                 fn  main () { ( 0 .. 100_000_000 ). for_each ( | n | { if is_armstrong_number ( n ) { println! ( "{n}" ) } }) }         

Смотрите также

Ссылки

  1. ^ abc Вайсштейн, Эрик В. «Нарциссическое число». MathWorld .
  2. ^ Совершенные и плюс-совершенные цифровые инварианты. Архивировано 10 октября 2007 г. на Wayback Machine Скоттом Муром.
  3. ^ Числа PPDI (Армстронг) Харви Хайнца
  4. ^ Числа Армстронга Дика Т. Винтера
  5. ^ Веб-журнал Лайонела Даймела
  6. ^ (последовательность A005188 в OEIS )
  • Джозеф С. Мадачи , Математика на каникулах , Thomas Nelson & Sons Ltd. 1966, страницы 163-175.
  • Роуз, Колин (2005), Радикальные нарциссические числа , Журнал занимательной математики, 33(4), 2004–2005, страницы 250-254.
  • Совершенные цифровые инварианты Вальтера Шнайдера
  • Цифровые инварианты
  • Числа Армстронга
  • Числа Армстронга в системе счисления от 2 до 16
  • Калькулятор чисел Армстронга от 1 до 999
  • Саймондс, Риа. "153 и нарциссические числа". Numberphile . Брэди Харан . Архивировано из оригинала 2021-12-19.
Взято с "https://en.wikipedia.org/w/index.php?title=Нарциссический_номер&oldid=1250507354"