Automorphic number

From HandWiki

In mathematics, an automorphic number (sometimes referred to as a circular number) is a natural number in a given number base b whose square "ends" in the same digits as the number itself.

Definition and properties

Given a number base b, a natural number n with k digits is an automorphic number if n is a fixed point of the polynomial function f(x)=x2 over /bk, the ring of integers modulo bk. As the inverse limit of /bk is b, the ring of b-adic integers, automorphic numbers are used to find the numerical representations of the fixed points of f(x)=x2 over b.

For example, with b=10, there are four 10-adic fixed points of f(x)=x2, the last 10 digits of which are:

0000000000
0000000001
8212890625 (sequence A018247 in the OEIS)
1787109376 (sequence A018248 in the OEIS)

Thus, the automorphic numbers in base 10 are 0, 1, 5, 6, 25, 76, 376, 625, 9376, 90625, 109376, 890625, 2890625, 7109376, 12890625, 87109376, 212890625, 787109376, 1787109376, 8212890625, 18212890625, 81787109376, 918212890625, 9918212890625, 40081787109376, 59918212890625, ... (sequence A003226 in the OEIS).

A fixed point of f(x) is a zero of the function g(x)=f(x)x. In the ring of integers modulo b, there are 2ω(b) zeroes to g(x)=x2x, where the prime omega function ω(b) is the number of distinct prime factors in b. An element x in /b is a zero of g(x)=x2x if and only if x0modpvp(b) or x1modpvp(b) for all p|b. Since there are two possible values in {0,1}, and there are ω(b) such p|b, there are 2ω(b) zeroes of g(x)=x2x, and thus there are 2ω(b) fixed points of f(x)=x2. According to Hensel's lemma, if there are k zeroes or fixed points of a polynomial function modulo b, then there are k corresponding zeroes or fixed points of the same function modulo any power of b, and this remains true in the inverse limit. Thus, in any given base b there are 2ω(b) b-adic fixed points of f(x)=x2.

As 0 is always a zero-divisor, 0 and 1 are always fixed points of f(x)=x2, and 0 and 1 are automorphic numbers in every base. These solutions are called trivial automorphic numbers. If b is a prime power, then the ring of b-adic numbers has no zero-divisors other than 0, so the only fixed points of f(x)=x2 are 0 and 1. As a result, nontrivial automorphic numbers, those other than 0 and 1, only exist when the base b has at least two distinct prime factors.

Automorphic numbers in base b

All b-adic numbers are represented in base b, using A−Z to represent digit values 10 to 35.

b Prime factors of b Fixed points in /b of f(x)=x2 b-adic fixed points of f(x)=x2 Automorphic numbers in base b
6 2, 3 0, 1, 3, 4

0000000000

0000000001

2221350213

3334205344

0, 1, 3, 4, 13, 44, 213, 344, 5344, 50213, 205344, 350213, 1350213, 4205344, 21350213, 34205344, 221350213, 334205344, 2221350213, 3334205344, ...

10 2, 5 0, 1, 5, 6

0000000000

0000000001

8212890625

1787109376

0, 1, 5, 6, 25, 76, 376, 625, 9376, 90625, 109376, 890625, 2890625, 7109376, 12890625, 87109376, 212890625, 787109376, 1787109376, 8212890625, ...
12 2, 3 0, 1, 4, 9

0000000000

0000000001

21B61B3854

9A05A08369

0, 1, 4, 9, 54, 69, 369, 854, 3854, 8369, B3854, 1B3854, A08369, 5A08369, 61B3854, B61B3854, 1B61B3854, A05A08369, 21B61B3854, 9A05A08369, ...
14 2, 7 0, 1, 7, 8

0000000000

0000000001

7337AA0C37

6AA633D1A8

0, 1, 7, 8, 37, A8, 1A8, C37, D1A8, 3D1A8, A0C37, 33D1A8, AA0C37, 633D1A8, 7AA0C37, 37AA0C37, A633D1A8, 337AA0C37, AA633D1A8, 6AA633D1A8, 7337AA0C37, ...
15 3, 5 0, 1, 6, 10

0000000000

0000000001

624D4BDA86

8CA1A3146A

0, 1, 6, A, 6A, 86, 46A, A86, 146A, DA86, 3146A, BDA86, 4BDA86, A3146A, 1A3146A, D4BDA86, 4D4BDA86, A1A3146A, 24D4BDA86, CA1A3146A, 624D4BDA86, 8CA1A3146A, ...
18 2, 3 0, 1, 9, 10

...000000

...000001

...4E1249

...D3GFDA

20 2, 5 0, 1, 5, 16

...000000

...000001

...1AB6B5

...I98D8G

21 3, 7 0, 1, 7, 15

...000000

...000001

...86H7G7

...CE3D4F

22 2, 11 0, 1, 11, 12

...000000

...000001

...8D185B

...D8KDGC

24 2, 3 0, 1, 9, 16

...000000

...000001

...E4D0L9

...9JAN2G

26 2, 13 0, 1, 13, 14

...0000

...0001

...1G6D

...O9JE

28 2, 7 0, 1, 8, 21

...0000

...0001

...AAQ8

...HH1L

30 2, 3, 5 0, 1, 6, 10, 15, 16, 21, 25

...0000

...0001

...B2J6

...H13A

...1Q7F

...S3MG

...CSQL

...IRAP

33 3, 11 0, 1, 12, 22

...0000

...0001

...1KPM

...VC7C

34 2, 17 0, 1, 17, 18

...0000

...0001

...248H

...VTPI

35 5, 7 0, 1, 15, 21

...0000

...0001

...5MXL

...TC1F

36 2, 3 0, 1, 9, 28

...0000

...0001

...DN29

...MCXS

Extensions

Automorphic numbers can be extended to any such polynomial function of degree n f(x)=i=0naixi with b-adic coefficients ai. These generalised automorphic numbers form a tree.

a-automorphic numbers

An a-automorphic number occurs when the polynomial function is f(x)=ax2

For example, with b=10 and a=2, as there are two fixed points for f(x)=2x2 in /10 (x=0 and x=8), according to Hensel's lemma there are two 10-adic fixed points for f(x)=2x2,

0000000000
0893554688

so the 2-automorphic numbers in base 10 are 0, 8, 88, 688, 4688...

Trimorphic numbers

A trimorphic number or spherical number occurs when the polynomial function is f(x)=x3.[1] All automorphic numbers are trimorphic. The terms circular and spherical were formerly used for the slightly different case of a number whose powers all have the same last digit as the number itself.[2]

For base b=10, the trimorphic numbers are:

0, 1, 4, 5, 6, 9, 24, 25, 49, 51, 75, 76, 99, 125, 249, 251, 375, 376, 499, 501, 624, 625, 749, 751, 875, 999, 1249, 3751, 4375, 4999, 5001, 5625, 6249, 8751, 9375, 9376, 9999, ... (sequence A033819 in the OEIS)

For base b=12, the trimorphic numbers are:

0, 1, 3, 4, 5, 7, 8, 9, B, 15, 47, 53, 54, 5B, 61, 68, 69, 75, A7, B3, BB, 115, 253, 368, 369, 4A7, 5BB, 601, 715, 853, 854, 969, AA7, BBB, 14A7, 2369, 3853, 3854, 4715, 5BBB, 6001, 74A7, 8368, 8369, 9853, A715, BBBB, ...

Programming example

def hensels_lemma(polynomial_function, base: int, power: int):
    """Hensel's lemma."""
    if power == 0:
        return [0]
    if power > 0:
        roots = hensels_lemma(polynomial_function, base, power - 1)
    new_roots = []
    for root in roots:
        for i in range(0, base):
            new_i = i * base ** (power - 1) + root
            new_root = polynomial_function(new_i) % pow(base, power)
            if new_root == 0:
                new_roots.append(new_i)
    return new_roots

base = 10
digits = 10

def automorphic_polynomial(x):
    return x ** 2 - x

for i in range(1, digits + 1):
    print(hensels_lemma(automorphic_polynomial, base, i))

See also

References