В продолжение статьи Переворачивающиеся при умножении числа, которую я написал в 2024 году, представляю небольшую статью-обновление.

Переворачивающимися при умножении числами я назвал такие числа a и b с одинаковым количеством цифр, что выполняется равенство:

a ∙ b = concat(reverse(b), reverse(a)),

где операция reverse записывает разряды числа в обратном порядке, а операция concat соединяет два числа в одно. Например, выполняются такие равенства:

218252 ∙ 837281 = 182738 252812
43275098 ∙ 77535533 = 33553577 89057234
47208027 ∙ 56843862 = 26834865 72080274
и т. д.

Алгоритмы нахождения переворачивающихся чисел приведены в оригинальной статье и комментариях к ней.

В данной статье я привожу (немного расширенный) список известных переворачивающихся чисел для разных оснований счисления и изучаю особенности найденных пар.


Вот полный список известных на текущий момент переворачивающихся при умножении чисел для разных оснований счисления:

https://github.com/Danila2016/NumbersThatFlipOnMultiplication/blob/main/bases.csv

Показать
base,length,a,b,rb,ra
2,27,111101110000100111010111111,100100001010111100111010001,100010111001111010100001001,111111010111001000011101111
2,40,1100111001101110111101000000000100000011,1010110100001000010111011110000111010001,1000101110000111101110100001000010110101,1100000010000000001011110111011001110011
2,42,111010101010110001000001000101111001101011,101100101100110011100110011110011111000101,101000111110011110011001110011001101001101,110101100111101000100000100011010101010111
#2,43-48-None
3,17,21111012220201202,20212211222110221,12201122211221202,20210202221011112
#3,18-28-None
4,4,2211,3102,2013,1122
4,6,330113,122021,120221,311033
4,11,20221122201,33313301202,20210331333,10222112202
4,12,220032112122,220231112121,121211132022,221211230022
4,13,3033122211023,2021000003321,1233000001202,3201122213303
4,19,3123010113323033123,1223000330230123211,1123210320330003221,3213303233110103213
4,20,21123300031031323121,33203011213013222012,21022231031211030233,12132313013000332112
4,21,231122200023011022212,200211130021013310311,113013310120031112002,212220110320002221132
4,21,131012330133313121331,220013120002032330201,102033230200021310022,133121313331033210131
4,22,2332233300300031202121,3320301310301213111232,2321113121030131030233,1212021300030033322332
#4,23-None
5,5,22231,43412,21434,13222
5,6,303424,311102,201113,424303
5,10,4402131124,1403420431,1340243041,4211312044
5,10,4424311302,2243042322,2232403422,2031134244
5,13,1322024130211,4242031404321,1234041302424,1120314202231
5,15,204304333140412,314110410304121,121403014011413,214041333403402
#5,16-20-None
6,5,40204,13001,10031,40204
6,10,2344420112,2433414111,1114143342,2110244432
6,10,2230332102,3120354411,1144530213,2012330322
6,10,1440535111,5043054031,1304503405,1115350441
6,14,21240011132212,42005450351431,13415305450024,21223111004212
#6,15-17-None
7,2,42,42,24,24
7,8,46343406,46631433,33413664,60434364
7,8,65305023,26140452,25404162,32050356
7,13,5054030524163,5540446553414,4143556440455,3614250304505
7,14,26623462035461,52046210055512,21555001264025,16453026432662
#7,15-16-None
8,4,6352,4023,3204,2536
8,6,552435,166321,123661,534255
8,7,6037502,4000203,3020004,2057306
8,8,41250414,27061041,14016072,41405214
8,9,554442365,175010131,131010571,563244455
8,10,6774770256,1540253631,1363520451,6520774776
8,10,6003775002,4000002003,3002000004,2005773006
8,10,5470206021,7431456225,5226541347,1206020745
8,13,6000377750002,4000000020003,3000200000004,2000577730006
#8,14-15-None
9,6,444572,480042,240084,275444
#9,7-14-None
10,6,218252,837281,182738,252812
10,8,43275098,77535533,33553577,89057234
10,8,47208027,56843862,26834865,72080274
10,8,83321918,23007191,19170032,81912338
10,10,6523664043,4475469192,2919645744,3404663256
10,10,7990749971,8794337207,7027334978,1799470997
10,16,8830950118748589,3376117662341892,2981432667116733,9858478110590388
#
11,9,54aa50055,246902221,122209642,55005aa45
11,12,534338726a98,598050086292,292680050895,89a627833435
#11,12-13-None
12,4,4718,5a22,22a5,8174
12,4,6596,9a35,53a9,6956
12,5,90309,14001,10041,90309
12,5,80408,16001,10061,80408
12,7,3b0b9b3,5418b81,18b8145,3b9b0b3
12,8,79bb17a7,22862551,15526822,7a71bb97
12,11,a0a40435495,3067a602862,268206a7603,59453404a0a
12,11,96124b45043,4a8b05766a3,3a66750b8a4,34054b42169
#12,12-None
13,11,628ba56c626,22a0bc87901,10978cb0a22,626c65ab826
#13,11-12-None
14,7,ca94b86,29d2862,2682d92,68b49ac
#14,8-11-None
15,4,4a24,3c21,12c3,42a4
15,5,90609,1a001,100a1,90609
15,10,59bcc30787,e5a4923465,5643294a5e,78703ccb95
15,11,a013a9012aa,207632a1551,1551a236702,aa2109a310a
#
16,3,269,e12,21e,962
16,6,ab5af2,848b85,58b848,2fa5ba
16,9,6ebade3a2,82b559883,388955b28,2a3edabe6
#16,9-11-None
17,2,6a,c4,4c,a6
17,5,473d7,ceg53,35gec,7d374
17,8,88b918f2,8g554484,484455g8,2f819b88
17,9,gad3cc3g9,f8701ac2f,f2ca1078f,9g3cc3dag
17,11,8g67ec7adf4,47ac038fe52,25ef830ca74,4fda7ce76g8
#
18,2,4b,a2,2a,b4
18,5,c060c,19001,10091,c060c
18,9,ahb305ahe,35c8a6702,2076a8c53,eha503bha
18,9,ad95ea864,c531fe167,761ef135c,468ae59da
18,9,a3h94a05h,eh2g90f88,88f09g2he,h50a49h3a
18,10,eb5b1hh5a8,529gf0g334,433g0fg925,8a5hh1b5be
#
19,2,62,b3,3b,26
#19,3-10-None
20,3,ac5,j2a,a2j,5ca
20,4,ce24,4j23,32j4,42ec
20,5,g040g,15001,10051,g040g
20,8,44ch32i2,ac2jgh42,24hgj2ca,2i23hc44
20,9,4f55610hc,8bb1h2h02,20h2h1bb8,ch01655f4
#20,10-None
21,3,7g7,ce4,4ec,7g7
21,7,h41830j,306fh92,29hf603,j03814h
21,9,ebdf0e728,a5b4k1827,7281k4b5a,827e0fdbe
21,9,c5cg8970f,kjc0k5g4c,c4g5k0cjk,f0798gc5c
#21,10-None
22,6,g5ldhf,5d5334,4335d5,fhdl5g
22,10,g025ebakli,9kh4eib357,753bie4hk9,ilkabe520g
#
#23,2-9-None
24,5,i060i,18001,10081,i060i
24,5,g080g,1c001,100c1,g080g
24,5,m823h,ff4de,ed4ff,h328m
24,5,l7ch3,h305f,f503h,3hc7l
24,5,6in21,m4h66,66h4m,12ni6
24,7,68kcfj3,9jbkbe2,2ebkbj9,3jfck86
24,8,62c9lnci,c6f1gm23,32mg1f6c,icnl9c26
#24,9-None
25,4,9ife,fb06,60bf,efi9
25,7,jaj0ja9,km7hn5g,g5nh7mk,9aj0jaj
#25,8-9-None
26,3,e1k,492,294,k1e
26,3,ifl,hec,ceh,lfi
26,3,mb7,lli,ill,7bm
26,7,abfnjg6,ge6kmg6,6gmk6eg,6gjnfba
#26,8-9-None

Какие закономерности я заметил:

  1. Для основания счисления M=5 чаще встречаются переворачивающиеся числа длины кратной 5. Хотя, может быть, это – совпадение: для M=6 тоже довольно часто длина кратна 5. И, кстати, в сумме по всем основаниям счисления длины 5 и 10 лидируют по количеству чисел.

    Статистика длин переворачивающихся чисел всех оснований счисления.
    Статистика длин переворачивающихся чисел всех оснований счисления.
  2. Для основания счисления M=8 cуществует бесконечное семейство переворачивающихся чисел:

    6037502 ∙ 4000203 = 3020004 2057306
    6003775002 ∙ 4000002003 = 3002000004 2005773006
    6000377750002 ∙ 4000000020003 = 3000200000004 2000577730006

    Бесконечные семейства также обнаружены для переворачивающихся чисел не обязательно одинаковой длины для M=10: A009944 - OEIS (похоже, эту ссылку блокируют, поэтому далее привожу цитату).

    Последовательность (переворачивающихся чисел произвольных длин для M=10) бесконечна, поскольку она содержит как минимум 3 бесконечные подпоследовательности, а именно b(n) = 3*(88810 + 2099*10^(6*n))/33670 = 187029, 187021087029,... c(n) = 11011*(1 + 100^(1 + 2*n))/101 = 109019911, 1090198019911,... and d(n) = 3*(53*10000^n - 14900)/10100 = 153, 1574253,... (здесь под числами имеются в виду произведения пар переворачивающихся чисел). Giovanni Resta, Mar 17, 2013

    Вопрос существования таких семейств для других оснований счисления M для пар чисел одинаковой длины пока является открытым.

  3. В первых двух парах для M=2 есть много сходств во втором множителе. Есть вероятность, что это одно семейство чисел:

    d = 27
    111101110000100111010111111 ∙ (10)(01000010)(101111)(00111010001) = 100010111001111010100001001 111111010111001000011101111

    d = 40
    1100111001101110111101000000000100000011 ∙
    (10){1011}(01000010)000{1011}(101111)00(00111010001) = 1000101110000111101110100001000010110101 1100000010000000001011110111011001110011

    (Это один из вариантов разбиения вторых множителей на повторяющиеся подгруппы. Числа в круглых скобках повторяются как в верхнем, так и в нижнем числе. Числа в фигурных скобках встречаются только в нижнем числе.).

    Можно предположить, что существует переворачивающаяся пара из того же семейства длины 40 + (40 - 27) = 53. Однако поиск по числам b, оканчивающимся на 111010001 длины 53 ничего не дал (если, конечно, я не допустил ошибки в коде).

  4. Также можно заметить, что в случае M=2 первое число всегда начинается на 11 и заканчивается на 11, а второе число всегда начинается на 10 и заканчивается на 01. Возможно, это случайность: первая и последняя цифры всегда должны быть равны 1.

  5. Для разных оснований счисления различается количество переворачивающихся чисел в среднем на порядок (“общее количество пар чисел” делить на “количество разрядов, для которых они посчитаны”).

    Возможно, это как-то связано с остатками от деления на M^k-1, M^k+1. Вроде бы получается, что остатки от деления некоторых выражений от цифр a и b могут принимать ограниченный набор значений (примерно 1/(M^k±1) от всех возможных вариантов).

    Поясню. Возьмём, например M=10 и d=3. Пусть мы рассматриваем равенство

    abc ∙ def = fed cba

    Тогда справедливо равенство и для остатков от деления на 101. Остаток от деления на 101 равен знакопеременной сумме двузначных подчисел, начиная с последних двух цифр:

    (bc - a)∙(ef - d) = ba - dc + fe

    (Чтобы это доказать, нужно применить примерно такие же рассуждения, как и для признака деления на 101.)

    И это можно переписать в виде:

    (с-a + 10∙b)(f-d + 10∙e) = a-c + 10∙b + 10∙(f-d) + e

    Таким образом, обозначив c-a = x, b = y, f-d = z, e = t, имеем:

    (x+10∙y)∙(z+10∙t) = (-x + 10∙y + 10∙z + t)

    Хотя и не представляется возможным выделить одинаковые выражения в левой и правой частях, если перебрать все возможные варианты x,y,z,t по модулю 101, то получится, что только 1/101 всех четвёрок будут удовлетворять равенству. Получается, если брать случайные пары чисел, то только около 1/101 из них будут совместимы по модулю 101.

    Аналогичные рассуждения справедливы для чисел большей разрядности и других k.

    Изначально у меня была идея, что если M^k±1 и M^t±1 не являются взаимнопростыми, то ограничений для этого M будет меньше, но, немного подумав, я уже не очень уверен, что это действительно так: ведь для разных k будут задействованы разные подгруппы цифр.

  6. Для двух пар чисел для M=10 попарно совпадают остатки от деления на 8008 перевёрнутых первых и вторых частей:

    43275098 ∙ 77535533 = 33553577 89057234
    47208027 ∙ 56843862 = 26834865 72080274

    33553577 ≡ 57 (mod 8008), 89057234 ≡ 266 (mod 8008)
    26834865 ≡ 57 (mod 8008), 72080274 ≡ 266 (mod 8008)

    8008 = 2 37 ∙ 11 ∙ 13

    Если отбросить 8, то всего валидных пар остатков на 1001 для правой части у меня получилось около 66 тыс. (если считать аналогично тому, как я считал для 101, только с ограничением на значения знакопеременных сумм из-за малого числа знаков). То есть вероятность такого события – примерно 1/66’000, что довольно удивительно.

    Код, чтобы это проверить
    # ABCDEFGH * STUVWXYZ = ZYXWVUTS HGFEDCBA
    # a = H - E + B
    # b = G - D + A
    # c = F - C
    # d = Z - W + T
    # e = Y - V + S
    # f = X - U
    pairs = set()
    second_multiplier = set()
    
    for a in range(-9, 18+1):
        for b in range(-9, 18+1):
            for c in range(-9, 9+1):
                for d in range(-9, 18+1):
                    for e in range(-9, 18+1):
                        for f in range(-9, 9+1):
                            if (a + 10*b + 100*c)*(d+10*e+100*f) % 1001 == (b - d + 10*(a + f) + 100*(-c + e)) % 1001:
                                pairs.add(((b + 10*a - 100*c) % 1001, (e + 10*d - 100*f) % 1001))
                                second_multiplier.add((d + 10*e + 100*f) % 1001)
    print(len(pairs))
    print(len(second_multiplier) / 1001)

    Кстати, по остаткам на 1001 в данном случае (d=8) отбраковывается 10% значений второго множителя. Возможно, это свойство можно применять в вычислениях...

Всем, кто дочитал, спасибо за внимание! Если вы найдёте другие интересные особенности, напишите об этом в комментариях.

Переворачивающиеся числа являются подмножеством Vampire numbers (числа, факторизующиеся используя свои цифры, например 1395=31*9*5), поэтому если вас слишком затянет, помните, что практического смысла в этом не очень много.