In number theory, a perfect digital invariant (PDI) is a number in a given number base (
b
p
Let
n
b>1
p>0
Fp,:N → N
Fp,(n)=
k-1 | |
\sum | |
i=0 |
p. | |
d | |
i |
k=\lfloorlogb{n}\rfloor+1
b
di=
n\bmod{bi+1 | |
- |
n\bmodbi}{bi}
n
Fp,
Fp,(n)=n
0
1
b
p
For example, the number 4150 in base
b=10
p=5
4150=45+15+55+05
A natural number
n
Fp,
k(n) | |
F | |
p,b |
=n
k
k | |
F | |
p,b |
k
Fp,b
k
k=1
k=2
All natural numbers
n
Fp,
k\geqp+2
n\geqbk-1>bpk
n
n>Fb,p(n)
n<bp+1
bp+1
bp+1
Numbers in base
b>p
n\leq(p-2)p+p(b-1)p
The number of iterations
i
i | |
F | |
p,b |
(n)
n
F1,
b
Fp,
F1,
p
0p=0
1p=1
For every natural number
k>1
p<b
(b-1)\equiv0\bmodk
(p-1)\equiv0\bmod\phi(k)
n
n\equivm\bmodk
Fp,(n)\equivm\bmodk
\phi(k)
No upper bound can be determined for the size of perfect digital invariants in a given base and arbitrary power, and it is not currently known whether or not the number of perfect digital invariants for an arbitrary base is finite or infinite.[1]
By definition, any three-digit perfect digital invariant
n=d2d1d0
F2,
0\leqd0<b
0\leqd1<b
0\leqd2<b
2 | |
d | |
0 |
+
2 | |
d | |
1 |
+
2 | |
d | |
2 |
=d2b2+d1b+d0
d2
b>2
n
n=(2-1)2+2(b-1)2=1+2(b-1)2<2b2
2 | |
d | |
0 |
+
2 | |
d | |
1 |
=d1b+d0
d2=0
2 | |
d | |
0 |
+
2 | |
d | |
1 |
+1=b2+d1b+d0
d2=1
n=d1d0
b=d1+
d0(d0-1) | |
d1 |
.
d2=0
b
d0
d1
n
d1
d0(d0-1)
d0>1
d0=0
d0=1
b=d1
0\leqd1<b
There are no three-digit perfect digital invariants for
F2,
d2=1
d0=b-a0
d1=b-a1
(b-
2 | |
a | |
0) |
+(b-
2 | |
a | |
1) |
+1=b2+(b-a1)b+(b-a0)
b2-2a0b+
2 | |
a | |
0 |
+b2-2a1b+
2 | |
a | |
1 |
+1=b2+(b-a1)b+(b-a0)
2b2-2(a0+a1)b+
2 | |
a | |
0 |
+
2 | |
a | |
1 |
+1=b2+(b-a1)b+(b-a0)
b2+(b-2(a0+a1))b+
2 | |
a | |
0 |
+
2 | |
a | |
1 |
+1=b2+(b-a1)b+(b-a0)
2(a0+a1)>a1
0<a1\leqb
F2,
By definition, any four-digit perfect digital invariant
n
F3,
0\leqd0<b
0\leqd1<b
0\leqd2<b
0\leqd3<b
3 | |
d | |
0 |
+
3 | |
d | |
1 |
+
3 | |
d | |
2 |
+
3 | |
d | |
3 |
=d3b3+d2b2+d1b+d0
d3
b>3
n
n=(3-2)3+3(b-1)3=1+3(b-1)3<3b3
3 | |
d | |
0 |
+
3 | |
d | |
1 |
+
3 | |
d | |
2 |
=d2b2+d1b+d0
d3=0
3 | |
d | |
0 |
+
3 | |
d | |
1 |
+
3 | |
d | |
2 |
+1=b3+d2b2+d1b+d0
d3=1
3 | |
d | |
0 |
+
3 | |
d | |
1 |
+
3 | |
d | |
2 |
+8=2b3+d2b2+d1b+d0
d3=2
d3=0
Let
k
b=3k+1
n1=kb2+(2k+1)b
F3,
k
n2=kb2+(2k+1)b+1
F3,
k
n3=(k+1)b2+(2k+1)
F3,
k
1 | 130 | 131 | 203 | ||
2 | 7 | 250 | 251 | 305 | |
3 | 370 | 371 | 407 | ||
4 | 13 | 490 | 491 | 509 | |
5 | 5B0 | 5B1 | 60B | ||
6 | 19 | 6D0 | 6D1 | 70D | |
7 | 22 | 7F0 | 7F1 | 80F | |
8 | 25 | 8H0 | 8H1 | 90H | |
9 | 28 | 9J0 | 9J1 | A0J |
Let
k
b=3k+2
n1=kb2+(2k+1)
F3,
k
1 | 103 | ||
2 | 205 | ||
3 | 11 | 307 | |
4 | 14 | 409 | |
5 | 17 | 50B | |
6 | 60D | ||
7 | 23 | 70F | |
8 | 26 | 80H | |
9 | 29 | 90J |
Let
k
b=6k+4
n4=kb2+(3k+2)b+(2k+1)
F3,
k
0 | 021 | ||
1 | 153 | ||
2 | 285 | ||
3 | 22 | 3B7 | |
4 | 28 | 4E9 |
All numbers are represented in base
b
p | b | Nontrivial perfect digital invariants | Cycles |
---|---|---|---|
2 | 12, 22 | 2 → 11 → 2 | |
\varnothing | \varnothing | ||
23, 33 | 4 → 31 → 20 → 4 | ||
\varnothing | 5 → 41 → 25 → 45 → 105 → 42 → 32 → 21 → 5 | ||
7 | 13, 34, 44, 63 | 2 → 4 → 22 → 11 → 216 → 52 → 41 → 23 → 16 | |
24, 64 | 4 → 20 → 4 5 → 31 → 12 → 5 15 → 32 → 15 | ||
45, 55 | 58 → 108 → 72 → 58 75 → 82 → 75 | ||
\varnothing | 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 | ||
11 | 56, 66 | 5 → 23 → 12 → 5 68 → 91 → 75 → 68 | |
25, A5 | 5 → 21 → 5 8 → 54 → 35 → 2A → 88 → A8 → 118 → 56 → 51 → 22 → 8 18 → 55 → 42 → 18 68 → 84 → 68 | ||
13 | 14, 36, 67, 77, A6, C4 | 28 → 53 → 2879 → A0 → 79 98 → B2 → 98 | |
14 | \varnothing | 1B → 8A → BA → 11B → 8B → D3 → CA → 136 → 34 → 1B 29 → 61 → 29 | |
15 | 78, 88 | 2 → 4 → 11 → 2 8 → 44 → 22 → 8 15 → 1B → 82 → 48 → 55 → 35 → 24 → 15 2B → 85 → 5E → EB → 162 → 2B 4E → E2 → D5 → CE → 17A → A0 → 6A → 91 → 57 → 4E 9A → C1 → 9A D6 → DA → 12E → D6 | |
\varnothing | D → A9 → B5 → 92 → 55 → 32 → D | ||
3 | 122 | 2 → 22 → 121 → 101 → 2 | |
20, 21, 130, 131, 203, 223, 313, 332 | \varnothing | ||
103, 433 | 14 → 230 → 120 → 14 | ||
243, 514, 1055 | 13 → 44 → 332 → 142 → 201 → 13 | ||
7 | 12, 22, 250, 251, 305, 505 | 2 → 11 → 2 13 → 40 → 121 → 13 23 → 50 → 236 → 506 → 665 → 1424 → 254 → 401 → 122 → 23 51 → 240 → 132 → 51 160 → 430 → 160 161 → 431 → 161 466 → 1306 → 466 516 → 666 → 1614 → 552 → 516 | |
134, 205, 463, 660, 661 | 662 → 670 → 1057 → 725 → 734 → 662 | ||
30, 31, 150, 151, 570, 571, 1388 | 38 → 658 → 1147 → 504 → 230 → 38 152 → 158 → 778 → 1571 → 572 → 578 → 1308 → 660 → 530 → 178 → 1151 → 152 638 → 1028 → 638 818 → 1358 → 818 | ||
153, 370, 371, 407 | 55 → 250 → 133 → 55 136 → 244 → 136 160 → 217 → 352 → 160 919 → 1459 → 919 | ||
11 | 32, 105, 307, 708, 966, A06, A64 | 3 → 25 → 111 → 3 9 → 603 → 201 → 9 A → 82A → 1162 → 196 → 790 → 895 → 1032 → 33 → 4A → 888 → 1177 → 576 → 5723 → A3 → 8793 → 1210 → A 25A → 940 → 661 → 364 → 25A 366 → 388 → 876 → 894 → A87 → 1437 → 366 49A → 1390 → 629 → 797 → 1077 → 575 → 49A | |
577, 668, A83, 11AA | |||
13 | 490, 491, 509, B85 | 13 → 22 → 13 | |
14 | 136, 409 | ||
15 | C3A, D87 | ||
16 | 23, 40, 41, 156, 173, 208, 248, 285, 4A5, 580, 581, 60B, 64B, 8C0, 8C1, 99A, AA9, AC3, CA8, E69, EA0, EA1 | ||
4 | \varnothing | 121 → 200 → 121 122 → 1020 → 122 | |
1103, 3303 | 3 → 1101 → 3 | ||
2124, 2403, 3134 | 1234 → 2404 → 4103 → 2323 → 1234 2324 → 2434 → 4414 → 11034 → 2324 3444 → 11344 → 4340 → 4333 → 3444 | ||
\varnothing | |||
7 | \varnothing | ||
20, 21, 400, 401, 420, 421 | |||
432, 2466 | |||
5 | 1020, 1021, 2102, 10121 | \varnothing | |
200 | 3 → 3303 → 23121 → 10311 → 3312 → 20013 → 10110 → 3 3311 → 13220 → 10310 → 3311 |
Perfect digital invariants can be extended to the negative integers by use of a signed-digit representation to represent each integer.
In balanced ternary, the digits are 1, −1 and 0. This results in the following:
p\equiv1\bmod2
Fp,
(-1)p=-1
0p=0
1p=1
p\equiv0\bmod2
Fp,
0p=0
(-1)p=1p=1
See main article: 3. A happy number
n
b
p
Fp,
m
Fp,
1
m
The example below implements the perfect digital invariant function described in the definition above to search for perfect digital invariants and cycles in Python. This can be used to find happy numbers.
def pdif_cycle(x: int, p: int, b: int) -> list[int]: seen = [] while x not in seen: seen.append(x) x = pdif(x, p, b) cycle = [] while x not in cycle: cycle.append(x) x = pdif(x, p, b) return cycle