Narzisstische Zahl - Narcissistic number
In der Zahlentheorie , eine narzisstische Zahl (auch bekannt als ein Plusquamperfekt digital invariant ( PPDI ), eine Armstrong Nummer (nach Michael F. Armstrong) oder ein Plus vollkommene Zahl ) in einer bestimmten Zahlenbasis ist eine Zahl , die die Summe seines eigenen ist Ziffern, die jeweils mit der Anzahl der Ziffern potenziert werden.
Definition
Sei eine natürliche Zahl. Wir definieren die narzisstische Funktion für base wie folgt:
wo ist die Anzahl der Stellen in der Zahl in base , und
ist der Wert jeder Ziffer der Zahl. Eine natürliche Zahl ist eine narzisstische Zahl, wenn sie ein Fixpunkt für ist , was auftritt, wenn . Die natürlichen Zahlen sind triviale narzisstische Zahlen für alle , alle anderen narzisstischen Zahlen sind nichttriviale narzisstische Zahlen .
Zum Beispiel ist die Zahl 153 in base eine narzisstische Zahl, weil und .
Eine natürliche Zahl ist eine gesellige narzisstische Zahl, wenn sie ein periodischer Punkt für ist , wo für eine positive ganze Zahl (hier die dritte Iteration von ) und einen Zyklus der Periode bildet . Eine narzisstische Zahl ist eine gesellige narzisstische Zahl mit und eine freundschaftliche narzisstische Zahl ist eine gesellige narzisstische Zahl mit .
Alle natürlichen Zahlen sind präperiodische Punkte für , unabhängig von der Basis. Dies liegt daran, dass für jede gegebene Ziffernanzahl der minimal mögliche Wert von is , der maximal mögliche Wert von is und der narzisstische Funktionswert is ist . Somit muss jede narzisstische Zahl die Ungleichung erfüllen . Multiplizieren wir alle Seiten mit , erhalten wir , oder äquivalent . Da bedeutet dies , dass es ein Maximalwert liegen , wo wegen der exponentiellen Natur und die Linearität von . Über diesen Wert hinaus , immer. Somit gibt es eine endliche Anzahl von narzisstischen Zahlen, und jede natürliche Zahl erreicht garantiert einen periodischen Punkt oder einen Fixpunkt kleiner als , was sie zu einem präperiodischen Punkt macht. Die Einstellung gleich 10 zeigt, dass die größte narzisstische Zahl zur Basis 10 kleiner sein muss als .
Die Anzahl der Iterationen, die benötigt wird , um einen Fixpunkt zu erreichen, ist die Persistenz der narzisstischen Funktion von , und undefiniert, wenn sie nie einen Fixpunkt erreicht.
Eine Basis hat mindestens eine zweistellige narzisstische Zahl genau dann, wenn sie keine Primzahl ist und die Anzahl der zweistelligen narzisstischen Zahlen in der Basis gleich ist , wobei die Anzahl der positiven Teiler von ist .
Jede Basis , die kein Vielfaches von neun ist, hat mindestens eine dreistellige narzisstische Zahl. Die Basen, die nicht sind
- 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, ... (Sequenz A248970 im OEIS )
Es gibt nur 89 narzisstische Zahlen zur Basis 10, von denen die größte ist
- 115.132.219.018.763.992.565.095.597.973.971.522.401
mit 39 Ziffern.
Narzisstische Zahlen und Zyklen von F b für spezifisches b
Alle Zahlen werden in Basis dargestellt . '#' ist die Länge jeder bekannten endlichen Folge.
Narzisstische Zahlen | # | Fahrräder | OEIS- Sequenz(en) | |
---|---|---|---|---|
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 und 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 und 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, 5B350, ... | 202 | A0161950 | |
14 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, 136, 409, 74AB5, 153A632, ... | 103 | A0161951 | |
fünfzehn | 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, C1, C1, C80E0, C80,E C84E1, ... | 294 | A161953 |
Erweiterung auf negative ganze Zahlen
Narzisstische Zahlen können auf negative ganze Zahlen erweitert werden, indem eine vorzeichenbehaftete Zifferndarstellung verwendet wird , um jede ganze Zahl darzustellen.
Programmierbeispiel
Python
Das folgende Beispiel implementiert die in der obigen Definition beschriebene narzisstische Funktion, um in Python nach narzisstischen Funktionen und Zyklen zu suchen .
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
Das folgende Python-Programm bestimmt, ob die eingegebene Ganzzahl eine narzisstische / Armstrong-Zahl ist oder nicht.
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
Das folgende Java- Programm bestimmt, ob die eingegebene ganze Zahl eine narzisstische / Armstrong-Zahl ist oder nicht.
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#
Das folgende C# -Programm bestimmt, ob die eingegebene Ganzzahl eine narzisstische / Armstrong-Zahl ist oder nicht.
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
Das folgende C- Programm bestimmt, ob die eingegebene ganze Zahl eine narzisstische / Armstrong-Zahl ist oder nicht.
#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;
}
Siehe auch
- Arithmetische Dynamik
- Dudeney-Nummer
- Fabrikation
- Glückliche Nummer
- Kaprekars Konstante
- Kaprekar-Nummer
- Meertens-Zahl
- Perfekte Ziffer-zu-Ziffer-Invariante
- Perfekte digitale Invariante
- Summe-Produktnummer
Verweise
- Joseph S. Madachy , Mathematics on Vacation , Thomas Nelson & Sons Ltd. 1966, Seiten 163-175.
- Rose, Colin (2005), Radical narcissistic numbers , Journal of Recreational Mathematics, 33(4), 2004-2005, Seiten 250-254.
- Perfekte digitale Invarianten von Walter Schneider