Trwałość liczby – funkcja przypisująca liczbie naturalnej liczbę iteracji potrzebnych do uzyskania punktu stałego poprzez wielokrotne wykonywanie określonej operacji na jej cyfrach. Najczęściej rozpatruje się trwałość multiplikatywną oraz trwałość addytywną.
Trwałość multiplikatywna Definicja Niech będzie podstawą systemu liczbowego, a liczba naturalna ma rozwinięcie: ,
gdzie są jej cyframi.
Definiujemy funkcję iloczynu cyfr: .
Trwałością multiplikatywną liczby , oznaczaną przez , nazywa się najmniejszą liczbę iteracji funkcji potrzebną do uzyskania liczby jednocyfrowej: ,
gdzie oznacza -krotne złożenie funkcji .
Przykłady Dla systemu dziesiętnego:
stąd: .
Przykład drugi:
zatem: .
Własności Jeżeli , to: dla każdej liczby jednocyfrowej. Jeżeli liczba wielocyfrowa zawiera cyfrę , to . Dla każdej liczby wielocyfrowej zachodzi . Proces iteracji funkcji zawsze kończy się po skończonej liczbie kroków. Trwałość multiplikatywna jest nieograniczona od góry dla niektórych podstaw systemów liczbowych, natomiast dla systemu dziesiętnego nie wiadomo, czy istnieją liczby o dowolnie dużej trwałości Nie jest znane istnienie liczby o trwałości multiplikatywnej większej niż w systemie dziesiętnym.
Trwałość addytywna Definicja Niech:
oznacza sumę cyfr liczby.
Trwałością addytywną liczby , oznaczaną przez , nazywa się najmniejszą liczbę iteracji funkcji potrzebną do uzyskania liczby jednocyfrowej (jej pierwiastka cyfrowego): .
Przykłady
stąd: .
Własności Jeżeli , to: dla każdej liczby jednocyfrowej. Dla każdej liczby wielocyfrowej zachodzi . Proces iteracji funkcji zawsze kończy się po skończonej liczbie kroków.
Informatyka Implementacja w C++
Trwałość multiplikatywna #include <iostream> using namespace std;
int multiplicative_persistence(long long number) { int persistence = 0;
while (number >= 10) { long long product = 1;
while (number > 0) { product *= number % 10; number /= 10;
number = product; persistence++;
return persistence; }
Trwałość addytywna #include <iostream> using namespace std;
int additive_persistence(long long number) { int persistence = 0;
while (number >= 10) { long long sum = 0;
while (number > 0) { sum += number % 10; number /= 10;
number = sum; persistence++;
return persistence; }
Przypisy
Kategoria:Teoria liczb Kategoria:Działania na liczbach