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

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

Externe Links