Нарциссическое число - Narcissistic number
В теории чисел , самовлюбленный номер (также известный как Давнопрошедшее цифровой инвариант ( PPDI ), номер Армстронг (после того, как Майкл Ф. Армстронг) или плюс совершенное число ) в данной системе счисления это число , которое является суммой его собственного цифры, каждая из которых возведена в степень числа цифр.
Определение
Позвольте быть натуральным числом. Мы определяем нарциссическую функцию для base следующим образом:
где - количество цифр в числе в базе , а
- значение каждой цифры числа. Натуральное число является нарциссическим числом, если оно является фиксированной точкой для , что происходит, если . Натуральные числа - это тривиальные нарциссические числа для всех , все остальные нарциссические числа - нетривиальные нарциссические числа .
Например, число 153 в основе является нарциссическим числом, потому что и .
Натуральное число является общительным нарциссическим числом , если она является периодической точкой для , где для положительного целого числа ( в данном случае это й итерации в ), и образует цикл периода . Нарциссическое число - это общительное нарциссическое число , а дружелюбное нарциссическое число - это общительное нарциссическое число с .
Все натуральные числа являются препериодическими точками для независимо от основания. Это связано с тем, что для любого заданного количества цифр минимально возможное значение равно , максимально возможное значение равно , а значение нарциссической функции равно . Таким образом, любое нарциссическое число должно удовлетворять неравенству . Умножение всех сторон , мы получаем , или , что эквивалентно, . Так , это означает , что будет максимальное значение , когда , из-за экспоненциального характера и линейности в . Помимо этого значения , всегда. Таким образом, существует конечное число нарциссических чисел, и любое натуральное число гарантированно достигает периодической точки или фиксированной точки меньше, чем , что делает его предпериодической точкой. Установка, равная 10, показывает, что наибольшее нарциссическое число в базе 10 должно быть меньше .
Число итераций , необходимых для достичь неподвижной точки нарциссических функциональной направления настойчивости в , и неопределенной , если он никогда не достигает фиксированную точку.
База имеет по крайней мере одно двузначное нарциссическое число тогда и только тогда, когда оно не является простым, а количество двузначных нарциссических чисел в базе равно , где - количество положительных делителей числа .
Каждая основа , не кратная девяти, имеет по крайней мере одно трехзначное нарциссическое число. Базы, которых нет
- 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 )
В базе 10 всего 89 нарциссических чисел, самое большое из которых
- 115,132,219,018,763,992,565,095,597,973,971,522,401
с 39 цифрами.
Нарциссические числа и циклы F b для конкретного b
Все числа представлены в базе . '#' - длина каждой известной конечной последовательности.
Нарциссические числа | # | Циклы | Последовательность OEIS | |
---|---|---|---|---|
2 | 0, 1 | 2 | ||
3 | 0, 1, 2, 12, 22, 122 | 6 | ||
4 | 0, 1, 2, 3, 130, 131, 203, 223, 313, 332, 1103, 3303 | 12 | A010344 и A010343 | |
5 | 0, 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 |
A010346 |
6 | 0, 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 |
A010348 |
7 | 0, 1, 2, 3, 4, 5, 6, 13, 34, 44, 63, 250, 251, 305, 505, 12205, 12252, 13350, 13351, 15124, 36034, 205145, 1424553, 1433554, 3126542, 4355653, 6515652, 125543055, ... | 60 | A010350 | |
8 | 0, 1, 2, 3, 4, 5, 6, 7, 24, 64, 134, 205, 463, 660, 661, 40663, 42710, 42711, 60007, 62047, 636703, 3352072, 3352272, ... | 63 | A010354 и A010351 | |
9 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 45, 55, 150, 151, 570, 571, 2446, 12036, 12336, 14462, 2225764, 6275850, 6275851, 12742452, ... | 59 | A010353 | |
10 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834, ... | 89 | A005188 | |
11 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, 56, 66, 105, 307, 708, 966, A06, A64, 8009, 11720, 11721, 12470, ... | 135 | A0161948 | |
12 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, 25, A5, 577, 668, A83, 14765, 938A4, 369862, A2394A, ... | 88 | A161949 | |
13 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, 14, 36, 67, 77, A6, C4, 490, 491, 509, B85, 3964, 22593, 5Б350, ... | 202 | A0161950 | |
14 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, 136, 409, 74AB5, 153A632, ... | 103 | A0161951 | |
15 | 0, 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 | A0161952 | |
16 | 0, 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, CE080, CE C84E1, ... | 294 | A161953 |
Расширение до отрицательных целых чисел
Нарциссические числа могут быть расширены до отрицательных целых чисел путем использования представления цифр со знаком для представления каждого целого числа.
Пример программирования
Python
В приведенном ниже примере реализуется нарциссическая функция, описанная в определении выше, для поиска нарциссических функций и циклов в 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 total
def ppdif_cycle(x, b):
seen = []
while x not in seen:
seen.append(x)
x = ppdif(x, b)
cycle = []
while x not in 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
return i
def required_sum(num):
i = no_of_digits(num)
s = 0
while num > 0:
digit = num % 10
num //= 10
s += pow(digit, i)
return s
num = int(input("Enter number:"))
s = required_sum(num)
if s == num:
print("Armstrong Number")
else:
print("Not Armstrong Number")
Джава
Следующая программа на Java определяет, является ли введенное целое числом Нарциссическим числом Армстронга или нет.
import java.util.Scanner;
public class ArmstrongNumber
{
public static void main ()
{
Scanner in = new Scanner (System.in);
System.out.println("Enter the number: ");
int num = in.nextInt();
double sum = required_sum(num);
if (num == sum)
System.out.println("Armstrong Number");
else
System.out.println("Not an Armstrong Number");
}
public static int no_of_digits(int num)
{
int i;
for ( i = 0; num > 0; i++)
num /= 10;
return i;
}
public static double required_sum(int num)
{
int i = no_of_digits(num);
double sum = 0;
while (num > 0)
{
int digit = num % 10;
num/=10;
sum += Math.pow(digit,i);
}
return sum;
}
C #
Следующая программа на C # определяет, является ли введенное целое числом нарциссическим / Армстронгом или нет.
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Enter the number:");
int value = int.Parse(Console.ReadLine());
if (value == RequiredSum(value))
{
Console.WriteLine("Armstrong Number");
}
else
{
Console.WriteLine("Not an Armstrong Number");
}
}
private static int CountDigits(int num)
{
int i = 0;
for (;num > 0; ++i) num /= 10;
return 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;
}
return sum;
}
}
C
Следующая программа на языке C определяет, является ли введенное целое числом нарциссическим / Армстронгским или нет.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int getNumberOfDigits(int n);
bool isArmstrongNumber(int candidate);
int main()
{
int userNumber = 0;
printf("Enter a number to verify if it is an Armstrong number: ");
scanf("%d", &userNumber);
printf("Is %d an Armstrong number?: %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;
}
Смотрите также
- Арифметическая динамика
- Номер Дудени
- Факторион
- Счастливый номер
- Постоянная Капрекара
- Число Капрекара
- Число Меертенса
- Совершенный инвариант преобразования цифр в цифру
- Совершенный цифровой инвариант
- Сумма-номер продукта
использованная литература
- Джозеф С. Мадачи , Математика на каникулах , Thomas Nelson & Sons Ltd. 1966, страницы 163–175.
- Роуз, Колин (2005), Радикальные нарциссические числа , Journal of Recreational Mathematics, 33 (4), 2004-2005, страницы 250-254.
- Совершенные цифровые инварианты Вальтера Шнайдера