Pierwiastek cyfrowy

Pierwiastek cyfrowy (ang. digital root) – funkcja przypisująca liczbie naturalnej jednocyfrową wartość otrzymaną poprzez iteracyjne sumowanie jej cyfr[1]. Wzór funkcji można przedstawić jako:

.

Definicja

Pierwiastek cyfrowy liczby naturalnej otrzymuje się, sumując wszystkie cyfry liczby, a następnie powtarzając tę operację dla uzyskanego wyniku aż do momentu otrzymania liczby jednocyfrowej[2].

Przykład:

Zatem pierwiastek cyfrowy liczby wynosi .

Uproszczenie

Pierwiastek cyfrowy liczby jest równoważny jej reszcie z dzielenia przez (z wyjątkiem przypadku, gdy liczba jest podzielna przez – wtedy wynik wynosi zamiast ). Dodatkowo przyjmuje się, że . Można go obliczyć za pomocą wzoru dla .

Dowód

Niech liczba naturalna ma rozwinięcie dziesiętne , gdzie są jej cyframi.

Ponieważ , zachodzi także dla każdego . Stąd .

Oznacza to, że liczba i suma jej cyfr mają tę samą resztę z dzielenia przez . Powtarzając operację sumowania cyfr, nie zmieniamy tej reszty, aż do uzyskania liczby jednocyfrowej.

Każdej klasie reszt modulo odpowiada dokładnie jedna liczba jednocyfrowa z zakresu –, przy czym reszcie 0 odpowiada liczba . Zatem:

  • jeśli , to ,
  • jeśli i , to .

W konsekwencji, dla :

[3].

Pojęcie pierwiastka cyfrowego można uogólnić na dowolny system liczbowy o podstawie . Dla liczby naturalnej zapisanej w systemie o podstawie :

,

gdzie , pierwiastek cyfrowy definiuje się jako wynik iteracyjnego sumowania cyfr aż do uzyskania jednej cyfry w tym systemie.

Zachodzi:

, a więc dla każdego , skąd:
.

W konsekwencji pierwiastek cyfrowy w systemie o podstawie odpowiada reszcie z dzielenia przez , z uwzględnieniem przypadków szczególnych:

  • jeśli , to ,
  • jeśli i , to ,
  • jeśli , to .

Zwarty wzór dla [4].

Własności

Jeśli , dla pierwiastka cyfrowego zachodzą następujące własności:

  1. Idempotentność:
  2. Operacje algebraiczne:
    • Dodawanie:
    • Odejmowanie
    • Mnożenie
    • Potęgowanie
    • Sumowanie
    • Iloczyn iterowany

  3. Okresowość:
    .

Dowód

  1. Idempotentność:
    Niech:
    .
    Wówczas ze względu na to, że pierwiastek cyfrowy jest liczbą jednocyfrową w systemie o podstawie :
    .
    Rozważmy dwa przypadki:
    • Jeżeli , to
      .
    • Jeżeli , to z definicji:
      .
    Ponieważ:
    ,
    otrzymujemy:
    .
    Zatem:
    .
    A więc:
    , q.e.d.
  2. Operacje algebraiczne:
    • Dodawanie:
      Z definicji pierwiastka cyfrowego:
      .
      Z własności modularnej:
      .
      Po zastosowaniu funkcji do obu stron otrzymujemy:
      , q.e.d.
    • Odejmowanie:
      Z definicji pierwiastka cyfrowego:
      .
      Z własności modularnej dla :
      .
      Po zastosowaniu funkcji do obu stron otrzymujemy:
      , q.e.d.
    • Mnożenie:
      Z definicji pierwiastka cyfrowego:
      .
      Z własności modularnej:
      .
      Po zastosowaniu funkcji do obu stron otrzymujemy:
      , q.e.d.
    • Potęgowanie:
      Z definicji pierwiastka cyfrowego:
      .
      Z własności modularnej:
      .
      Po zastosowaniu funkcji do obu stron otrzymujemy:
      , q.e.d.
    • Sumowanie:
      Z definicji pierwiastka cyfrowego:
      .
      Z własności modularnej:
      .
      Po zastosowaniu funkcji do obu stron otrzymujemy:
      , q.e.d.
    • Iloczyn iterowany:
      Z definicji pierwiastka cyfrowego:
      .
      Z własności modularnej:
      .
      Po zastosowaniu funkcji do obu stron otrzymujemy:
      , q.e.d.
  3. Okresowość:
    .
    Z definicji pierwiastka cyfrowego:
    .
    Z własności modularnej:
    .
    Po zastosowaniu funkcji do obu stron otrzymujemy:
    , q.e.d.

Informatyka

W informatyce pierwiastek cyfrowy może być definiowany dla dowolnej podstawy systemu liczbowego . Najczęściej stosuje się podstawę dziesiętną (), jednak uogólnienie pozwala na implementację dla dowolnego systemu pozycyjnego.

Implementacja w C++

Istnieją dwa główne podejścia do obliczania tej funkcji: metoda iteracyjna oraz metoda oparta na wzorze modularnym.

Implementacja iteracyjna

#include <iostream>
using namespace std;

int digital_root(long long number, int base = 10) {
    if (number == 0) return 0;

    while (number >= base) {
        long long sum = 0;

        while (number > 0) {
            sum += number % base;
            number /= base;
        }

        number = sum;
    }

    return static_cast<int>(number);
}

Metoda iteracyjna odwzorowuje definicję pierwiastka cyfrowego dla dowolnej podstawy systemu liczbowego. Polega na wielokrotnym sumowaniu cyfr liczby w systemie o podstawie base, aż do uzyskania wyniku jednocyfrowego. Złożoność obliczeniowa wynosi na każdą redukcję, gdzie to liczba cyfr[5].

Implementacja modularna

#include <iostream>
using namespace std;

int digital_root(long long number, int base = 10) {
    if (number == 0) return 0;
    return 1 + ((number - 1) % (base - 1));
}

Metoda wzorowa wykorzystuje własność . Dzięki temu wynik można obliczyć bez iteracji. W tym przypadku złożoność obliczeniowa wynosi [5].

Przypisy

  1. ↑ Kalkulator Pierwiastka Cyfrowego [online], miniwebtool.com.
  2. ↑ Pierwiastek cyfrowy [online], DEV Community, 18 marca 2022.
  3. ↑ Eric W. Weisstein, Digital Root [online], mathworld.wolfram.com (ang.).
  4. ↑ F.M. Hall, An Introduction to Abstract Algebra, CUP Archive, 6 kwietnia 1972, ISBN 978-0-521-08484-0 (ang.).
  5. 1 2 Mateusz Dański, Trwałość liczb [online], mattomatti.com.