Položím dotaz a pak řeknu, na co jsem přišel.
Existuje něco jako absolutní ciferný součet (ACF)? To znamená, že pokud ciferný součet výjde větší jak 9, opět se na něj aplikuje ciferný součet, dokud nevyjde číslo v rozmezí 0-9. Pokud takový pojem neexistuje, tak si ho tak pracovně nazveme.
Nyní k tomu, k čemu jsem náhodou dospěl.
V hodině chemie jsem se opravdu nudil a z nudy jsem začal psát mocniny dvojky - začátek umíte každý zpaměti, 2, 4, 8, 16, 32, 64, 128, 256, 512... takhle jsem pokračoval asi ještě 20 čísel. Dál jsem pak udělal výše definovaný absolutní ciferný součet jednotlivých čísel a zjistil jsem, že se onen absolutní ciferný součet periodicky opakuje - 1,2,4,8,7,5 - to celé v nekonečné periodě. Ze zajimovosti jsem to udělal z mocninami trojky, zde ACF vycházel 1,3,9,9,9,9... a nekonečno devítek. Jak jsem záhy zjistil, perioda se dá najít v ACF mocnin jakéhokoliv čísla. A co více, perioda se dokonce nachází v ACF vzrůstajících čísel stejné mocniny (2^2,3^2,4^2,5^2, ACF se opět periodicky opakuje). Pokud to přesně nechápete, ukáži vám následující tabulku:
1 1 1 1 1 1 1 1 1 1
1 2 4 8 7 5 1 2 4 8
1 3 9 9 9 9 9 9 9 9
1 4 7 1 4 7 1 4 7 1
1 5 7 8 4 2 1 5 7 8
1 6 9 9 9 9 9 9 9 9
1 7 4 1 7 4 1 7 4 1
1 8 1 8 1 8 1 8 1 8
1 9 9 9 9 9 9 9 9 9
1 1 1 1 1 1 1 1 1 1
1 2 4 8 7 5 1 2 4 8
1 3 9 9 9 9 9 9 9 9
1 4 7 1 4 7 1 4 7 1
1 5 7 8 4 2 1 5 7 8
1 6 9 9 9 9 9 9 9 9
1 7 4 1 7 4 1 7 4 1
1 8 1 8 1 8 1 8 1 8
1 9 9 9 9 9 9 9 9 9
1 1 1 1 1 1 1 1 1 1
1 2 4 8 7 5 1 2 4 8
1 3 9 9 9 9 9 9 9 9
1 4 7 1 4 7 1 4 7 1
1 5 7 8 4 2 1 5 7 8
1 6 9 9 9 9 9 9 9 9
1 7 4 1 7 4 1 7 4 1
1 8 1 8 1 8 1 8 1 8
1 9 9 9 9 9 9 9 9 9
z prava doleva jsou mocniny (0-9) a shora dolů jsou základy (1-x).
Pro zájemce ještě program v C++, který to generuje (žel, docela brzo začnou přetýkat i unsigned long a program háže nesmyslny hodnoty):
#include <iostream>
#include <cmath>
const int VELIKOSTY=10;
const int VELIKOSTX=50;
using namespace std;
unsigned long int cif_souc(unsigned long int x);
unsigned long int mocnina(unsigned long int x,unsigned long int y);
int main(){
unsigned long int pole[VELIKOSTX][VELIKOSTY];
for (int i=0;i<VELIKOSTX;i++)
for (int j=0;j<VELIKOSTY;j++)
pole[i][j]=mocnina(i,j);
for (int i=0;i<VELIKOSTX;i++)
for (int j=0;j<VELIKOSTY;j++)
//cifernej soucet
pole[i][j]=cif_souc(pole[i][j]);
for (int i=0;i<VELIKOSTX;i++)
{
for (int j=0;j<VELIKOSTY;j++)
cout << pole[i][j] << " ";
cout << endl;
}
cin.get();
return 0;
}
unsigned long int cif_souc(unsigned long int x)
{
if (x<10) return x;
unsigned long int souc=0;
while (x>=1)
{
souc+=x%10;
x=x/10;
}
x=souc;
return cif_souc(x);
}
unsigned long int mocnina(unsigned long int x,unsigned long int y)
{
unsigned long int vysledek=x;
if (y<1) return 1;
for (int i=1;i<y;i++)
vysledek*=x;
return vysledek;
}
Přišlo mi to hodně zvláštní a zajimavy. Zajimalo by mě, čím se to všechno řídí (jakej vztah mají čísla periody a velikost periody k onomu číslu, čím se ty periody řídí a podobně). Nevěděl o tom někdo něco už dřív?