Суммы кубов последовательных натуральных чисел Георгий Гуляев 20 февраля 2023 г. 1. Введение Простейший пример прямоугольного треугольника с целыми сторонами (3, 4, 5), в соответствии с теоремой Пифагора, характеризуется извест- ным равенством: 3 2 + 4 2 = 5 2 Для кубов натуральных чисел существует его полный аналог: 3 3 + 4 3 + 5 3 = 6 3 Не вдаваясь в его геометрическую интерпретацию скажем просто, что сумма кубов трех последовательных натуральных чисел равна кубу неко- торого числа. А есть ли подобное равенство для четырех последовательных кубов? Оказывается есть 11 3 + 12 3 + 13 3 + 14 3 = 20 3 А для пяти? А вот для пяти по непонятной причине такого равенства найти никак не удается. По крайней мере в пределах вычислительных возможностей компьютера. Не было найдено подобного равенства ни для одного от 5 до 19 числа последовательных кубов. 1 А вот для 20-ти последовательных кубов таких равенств было обнару- жено сразу два 3 3 + 4 3 + 5 3 + 6 3 + ... + 20 3 + 21 3 + 22 3 = 40 3 15 3 + 16 3 + 17 3 + 18 3 + ... + 32 3 + 33 3 + 34 3 = 70 3 Исследование возможности представления суммы кубов последователь- ных натуральных чисел в виде куба некоторого натурального числа при помощи компьютера приводит нас к интересным и даже немного стран- ным наблюдениям, о которых и пойдет речь в данной статье. Что касается источников, где затрагивалась бы данная проблема, то я нашел только переписку от 1997 года [1] и обсуждение на форуме mathoverflow [2]. [5-7] не совсем по данной теме, но там рассматри- ваются близкие вопросы. 2. Первые наблюдения и результаты Для упрощения вычислений на компьютере выведем несколько формул. Обозначим S n = n ∑ x =1 x 3 Имеется замечательная формула (см. например [3]) S n = ( n ∑ x =1 x ) 2 = ( n ( n + 1) 2 ) 2 = T 2 n Здесь T n = n ( n +1) 2 обозначает так называемое треугольное число - [4]. Исследуемую сумму n − m кубов последовательных натуральных чисел, начиная с m + 1 -го по n , обозначим S m,n = n ∑ x = m +1 x 3 Тогда, S 2 , 5 = 6 3 , S 10 , 14 = 20 3 , S 2 , 22 = 40 3 , S 14 , 34 = 70 3 , cогласно приме- ров из введения. Наша задача находить m и n при которых сумма S m,n является кубом некоторого натурального числа c . 2 Учитывая тот факт, что S m,n = S n − S m , получаем основную формулу для суммы S m,n : S m,n = T 2 n − T 2 m (1) Определение . Если для некоторых натуральных m, n, c : S m,n = c 3 , то тройку ( m + 1 , n − m, c ) будем называть решением задачи. Поскольку c легко вычисляется по m и n , то пару ( m, n ) будем также называть решением , если S m,n = c 3 для некоторого c ∈ N . Отметим, что m + 1 - первое число в сумме S m,n , а n − m - количество слагаемых. Ну что же пришла пора написать первую программу на языке Julia и с ее помощью провести первые наблюдения. function search(k1,k2) cbt(a) = Int64(floor(cbrt(a))) t(n) = div(n*(n+1),2) for m in 2:k1, n in m+2:k2 b = t(n)^2 - t(m)^2 a = cbt(b) if a^3==b println((m+1,n-m,a)) end end end Функция t ( n ) вычисляет n-е треугольное число, cbt ( a ) - вычисляет куби- ческий корень и обрезает результат до целого. Выполним поиск решений ( m + 1 , n − m, c ) в диапазоне m до 100000 и n до 200000. julia> search(100000,200000) (3, 3, 6) (3, 20, 40) (6, 25, 60) (6, 64, 180) (11, 4, 20) (11, 99, 330) 3 (15, 20, 70) (34, 125, 540) (213, 153, 1581) (213, 343, 2856) (273, 288, 2856) (291, 49, 1155) (305, 6591, 82680) (406, 512, 5544) (556, 99, 2805) (646, 153, 3876) (1134, 1000, 16830) (1624, 14161, 249424) (1735, 1331, 27060) (3010, 13923, 273819) (3606, 2197, 62244) (4880, 49776, 1306620) (4966, 2744, 90090) (8790, 4096, 175440) (11170, 63001, 1962820) (11368, 4913, 237456) (18171, 6859, 413820) (18551, 33124, 1205750) (22534, 8000, 534660) (33558, 10648, 860706) (34228, 1849, 431548) (40381, 12167, 1074744) (46690, 25201, 1764070) (57084, 15625, 1630200) (67150, 17576, 1983150) (91206, 21952, 2872044) Первый, второй, пятый и седьмой результаты совпадают с примерами из введения. Интересно, что число c = 2856 повторилось два раза, то есть его куб представляется двумя способами как сумма кубов после- довательных натуральных чисел: 288 кубов, начиная с 273 и 343 куба, начиная с 213. Заметим, что среди чисел k = n − m встречается много кубов. Выпишим их отдельно: 4 (6, 64 = 4^3, 180) (34, 125 = 5^3, 540) (213, 343 = 7^3, 2856) (406, 512 = 8^3, 5544) (1134, 1000 = 10^3, 16830) (1735, 1331 = 11^3, 27060) (3606, 2197 = 13^3, 62244) (4966, 2744 = 14^3, 90090) (8790, 4096 = 16^3, 175440) (11368, 4913 = 17^3, 237456) (18171, 6859 = 19^3, 413820) (22534, 8000 = 20^3, 534660) (33558, 10648 = 22^3, 860706) (40381, 12167 = 23^3, 1074744) (57084, 15625 = 25^3, 1630200) (67150, 17576 = 26^3, 1983150) (91206, 21952 = 28^3, 2872044) Тут прослеживаются явные закономерности. Все числа m + 1 , k, c равно- мерно растут, а в качестве k идут подряд кубы чисел 4 , 5 , 7 , 8 , 10 , ... , то есть всех чисел больших 3 и не делящихся на 3. В 1997 году Dave Rusin доказал следующую теорему [1]. Теорема 1 . Пусть k является кубом: k = u 3 , u ∈ N , u > 3 и u не делится на 3, тогда множество решений ( i, k, c ) вычисляется по формулам: k = u 3 , i = ( u 3 − 2 u 2 − 4 u − 4)( u − 1) 6 , c = u ( u 2 − 1)( u 2 + 2) 6 (2) Это удивительное утверждение. То есть, если количество слагаемых ку- бов последовательных чисел само является кубом, то решения нашей задачи, странным образом, подчиняются этому строгому правилу. Таким образом, мы получаем возможность легко находить сколько угод- но большие решения ( i, k, c ) . f(u)=(div((u^3-2*u^2-4*u-4)*(u-1),6),u^3,div(u*(u^2-1)*(u^2+2),6)) 5 julia> f(1853) (1961762744206, 6362477477, 3641044381633044) julia> f(big(123456789)) (38717619525538349716578619196532, 1881676371789154860897069, 4779953100499530492335664361681889077740) Из формул (2) можно выразить явно m и n и привести их к виду: m = ( u 2 − 1) 2 − 3( u 3 + 1) 6 , n = ( u 2 − 1) 2 + 3( u 3 − 1) 6 , c = u ( u 2 − 1)( u 2 + 2) 6 Заметим, что формулы подобные (2), были найдены и для более простого случая, когда сумма квадратов последовательных натуральных чисел является квадратом [7]. То есть, если i 2 + ( i + 1) 2 + ... + ( i + k − 1) 2 = c 2 , то в случае k = u 2 , u ∈ N , имеем семейство решений: k = u 2 , i = ( u 2 + 1)( u 2 − 25) 48 , c = u ( u 4 + 47) 48 (3) Любопытно, что здесь скорость роста i и c ( u 4 и u 5 , соответственно) по отношению к формуле (2) не изменилась, несмотря на то, что k = u 2 растет на порядок медленнее, чем k = u 3 . Формулу (3) еще можно переписать следующим образом: k = u 2 , i = ( k + 1)( k − 25) 48 , c = √ k ( k 2 + 47) 48 3. Общий случай любого k = n − m К сожалению, в случае, когда k = n − m не является точным кубом, никакой закономерности уже не наблюдается. 6 (3, 3, 6) (11, 4, 20) (3, 20, 40) (15, 20, 70) (6, 25, 60) (291, 49, 1155) (11, 99, 330) (556, 99, 2805) (213, 153, 1581) (646, 153, 3876) (273, 288, 2856) (34228, 1849, 431548) (305, 6591, 82680) (3010, 13923, 273819) (1624, 14161, 249424) (46690, 25201, 1764070) (18551, 33124, 1205750) (4880, 49776, 1306620) (11170, 63001, 1962820) Теорема 2 . Пусть n, m ∈ N , n > m . Имеет место формула S m,n = ( n − m )( n + m + 1)( n 2 + m 2 + m + n ) 4 (4) Доказательство . Воспользуемся приведенной выше формулой (1). S m,n = T 2 n − T 2 m = ( n ( n + 1) 2 ) 2 − ( m ( m + 1) 2 ) 2 = = [ n ( n + 1) − m ( m + 1)] × [ n ( n + 1) + m ( m + 1)] 4 = ( n 2 − m 2 + n − m ) × ( n 2 + m 2 + n + m ) 4 = ( n − m )( n + m + 1)( n 2 + m 2 + m + n ) 4 Что и требовалось доказать. Заметим, что выражение в числителе (4) делится на 4 для любых n, m ∈ N , n > m . Действительно, запишем его в следующем виде ( n − m )( n + m + 1)[ n ( n + 1) + m ( m + 1)] . 7 Очевидно, что третья скобка всегда делится на 2, первая скобка ( n − m ) делится на 2 в случае, когда m и n имеют одинаковую четность, а вторая ( n + m + 1) делится на 2 в случае, когда m и n имеют разную четность. Также легко проверить, что при n = m + 1 формула (4) преобразуется к виду: S m,n = ( m + 1) 3 . Из формулы (4) следует еще одна формула для S n,m . Теорема 3 . Пусть n, m ∈ N , n > m . Имеет место формула S m,n = [(2 n + 1) 2 − (2 m + 1) 2 )][(2 n + 1) 2 + (2 m + 1) 2 − 2] 64 (5) Доказательство . Заметим, что (2 n + 1) 2 − (2 m + 1) 2 = (2 n − 2 m )(2 n + 2 m + 2) = 4( n − m )( n + m + 1) (2 n + 1) 2 + (2 m + 1) 2 − 2 = 4 n 2 + 4 m 2 + 4 n + 4 m = 4( n 2 + m 2 + n + m ) Подставляя в формулу (4) найденные выражения для ( n − m )( n + m + 1) и для n 2 + m 2 + n + m , получаем (5). Следствие 1 . Для того чтобы пара m, n ∈ N , n > m приводила к реше- нию ( m + 1 , n − m, c ) , c ∈ N необходимо и достаточно чтобы выражение [(2 n + 1) 2 − (2 m + 1) 2 )][(2 n + 1) 2 + (2 m + 1) 2 − 2] (6) было кубом натурального числа. Доказательство . Пусть ( m + 1 , n − m, c ) - решение. Тогда S m,n = c 3 . Умножим обе стороны равенства (5) на 64 = 4 3 . Получим [(2 n + 1) 2 − (2 m + 1) 2 )][(2 n + 1) 2 + (2 m + 1) 2 − 2] = 4 3 S m,n = (4 c ) 3 Обратно, если выражение (6) является кубом, то, поскольку оно делится на 64 = 4 3 , этот куб можно записать в виде (4 c ) 3 для некоторого c . Тогда в формуле (5) S m,n = c 3 . Таким образом, ( m + 1 , n − m, c ) - решение. Что и требовалось доказать. Выражение (6) содержит разность и сумму квадратов двух нечетных чисел. Нам нужно научиться определять, когда оно является кубом, а когда нет. 8 Следствие 2 . Пусть a, b ∈ N - два нечетных числа и b > a . Введем следующие функции g ( x ) = x 2 − 1 и f ( x ) = g ( g ( x )) = ( x 2 − 1) 2 − 1 . Для того чтобы пара m = a − 1 2 , n = b − 1 2 приводила к решению ( m +1 , n − m, c ) , c ∈ N необходимо и достаточно чтобы выражение f ( b ) − f ( a ) = ∫ b a f ′ ( x ) dx (7) было кубом натурального числа. Доказательство . Вытекает непосредственно из следствия 1, поскольку f ( b ) − f ( a ) = ( b 2 − 1) 2 − ( a 2 − 1) 2 = ( b 2 − a 2 )( b 2 + a 2 − 2) = [(2 n + 1) 2 − (2 m + 1) 2 )][(2 n + 1) 2 + (2 m + 1) 2 − 2] . Представление в виде интеграла в (7) - обычная формула Ньютона- Лейбница. Отображение x → x 2 − 1 имеет неподвижную точку ( √ 5+1 2 , √ 5+1 2 ) = ( ϕ, ϕ ) , где ϕ - золотое сечение. Теорема 4 . Пусть u, v ∈ N , u > v , u и v имеют одинаковую четность, g ( x ) = x 2 − 1 и для некоторых нечетных натуральных a и b выполняются равенства: g ( a ) = v ( u 2 − v 2 ) , g ( b ) = u ( u 2 − v 2 ) (8) Тогда пара m = a − 1 2 , n = b − 1 2 приводит к решению ( m + 1 , n − m, u 2 − v 2 4 ) . Доказательство . Пусть, как и в следствии 2 из теоремы 3, f ( x ) = g ( g ( x )) , тогда f ( b ) − f ( a ) = g ( g ( b )) − g ( g ( a )) = g ( u ( u 2 − v 2 )) − g ( v ( u 2 − v 2 )) = ( u ( u 2 − v 2 )) 2 − ( v ( u 2 − v 2 )) 2 = ( u 2 − v 2 ) 3 В соответствии со следствием 2 из теоремы 3, m и n приводят к решению ( m + 1 , n − m, c ) . Так как u и v имеют одинаковую четность, то u 2 − v 2 делится на 4, а из формулы (5) следует, что S m,n = f ( b ) − f ( a ) 64 = ( u 2 − v 2 ) 3 64 = ( u 2 − v 2 4 ) 3 Таким образом, c = u 2 − v 2 4 . Что и требовалось доказать. 9 4. Поиски новых решений ( m, n ) На основе доказанных утверждений усовершенствуем нашу программу. function search(k1,k2) a = 939393 l = fill(false,a) for i in 1:1000000 l[i^3%a+1] = true end cbt(x) = Int128(floor(cbrt(x))) isc(x) = x == cbt(x)^3 rate(k) = filter(x -> k<x[1],[(500,25),(5000,12),(20000,7),(10^9,2)])[1][2] g(x) = x^2 - 1; f(x) = g(g(Int128(x))); mf(x) = div((x^3-2*x^2-4*x-4)*(x-1),6)-1 u = Int128(4); lm = Vector{Tuple{Int128,Int128,Int128}}(); mu = mf(u) inc() = if (u+1)%3>0 u+=1 else u+=2 end while mu < k1 inc(); mu = mf(u) end while mu <= k2 push!(lm,(u,mu,mu+u^3)); inc(); mu = mf(u) end for m in Int128(k1):k2 print("\e[2K"); print(m); print("\e[1G") for n in m+2:m*rate(m) lm0 = filter(x -> x[2]==m&&x[3]==n,lm) if length(lm0)>0 print("\e[2K"); println(string((m,n)," u = ",lm0[1][1])) else z = f(2*n+1) - f(2*m+1) if l[z%a+1] if isc(z) print("\e[2K"); println((m,n)) end end end end end end Для увеличения скорости работы программы используем массив из 939393 элементов true или false. Если для данного индекса существует куб нату- 10 рального числа, который при делении на a = 939393 дает остаток равный этому индексу, то пишем true, а иначе false. И перед основной проверкой числа на куб (функция isc(x)), будем отсе- кать те числа z, для которых в массиве по индексу z % a + 1 находится false. При помощи этой программы удалось получить следующие пары ( m, n ) , приводящие к решению. В тех случаях, когда они генерируются форму- лой (2), то есть, когда n - m является кубом, выводится соответствующее значение u . (2, 5) (2, 22) (5, 30) (5, 69) u = 4 (10, 14) (10, 109) (14, 34) (33, 158) u = 5 (212, 365) (212, 555) u = 7 (272, 560) (290, 339) (304, 6895) (405, 917) u = 8 (555, 654) (645, 798) (1133, 2133) u = 10 (1623, 15784) (1734, 3065) u = 11 (3009, 16932) (3605, 5802) u = 13 (4879, 54655) (4965, 7709) u = 14 (8789, 12885) u = 16 (11169, 74170) (11367, 16280) u = 17 (18170, 25029) u = 19 11 (18550, 51674) (22533, 30533) u = 20 (33557, 44205) u = 22 (34227, 36076) (40380, 52547) u = 23 (46689, 71890) (57083, 72708) u = 25 (67149, 84725) u = 26 (91205, 113157) u = 28 (105405, 129794) u = 29 (106454, 116654) (138704, 168495) u = 31 (158037, 190805) u = 32 (202685, 241989) u = 34 (228258, 271133) u = 35 (266784, 288240) (267902, 287122) (286577, 337230) u = 37 (319605, 374477) u = 38 (394133, 458133) u = 40 (407525, 584349) (418488, 769719) (435939, 504860) u = 41 (529430, 608937) u = 43 (581445, 666629) u = 44 (696869, 794205) u = 46 (760632, 864455) u = 47 (901175, 1018824) u = 49 (978333, 1103333) u = 50 (1147397, 1288005) u = 52 (1239705, 1388582) u = 53 (1440908, 1607283) u = 55 (1550229, 1725845) u = 56 (1787405, 1982517) u = 58 (1915710, 2121089) u = 59 (2192909, 2419890) u = 61 (2342277, 2580605) u = 62 (2663765, 2925909) u = 64 12 (2836383, 3111008) u = 65 (2984767, 5234157) (3206642, 3507405) u = 67 (3404805, 3719237) u = 68 (3828533, 4171533) u = 70 (4054644, 4412555) u = 71 (4536755, 4925772) u = 73 (4793325, 5198549) u = 74 Кажется, что с ростом значений m и n решения, когда n - m не куб, встречаются все реже и реже. Возможно ли, что их конечное число? Непонятно, правда, как это можно было бы доказать. Дальнейшие вы- числения занимают слишком много времени. К сожалению, попытка ис- пользовать формулу (8) из теоремы 4, также не приводит к новым ре- шениям ( m, n ) , когда n - m не куб. function find(d1,d2) l = primes(123400,123599) function test(x) for p in l if legendre(x,p)<2 || return false end end true end sqt(x) = Int128(floor(sqrt(x))); ok(x,y) = x^2==y fa(u,v) = Int128(v)*(u^2-v^2)+1; fb(u,v) = Int128(u)*(u^2-v^2)+1 for v in d1 print("\e[2K"); print(v); print("\e[1G") for u in filter(x -> (x-v)%2==0,d2) aa = fa(u,v); bb = fb(u,v) if test(aa)&&test(bb) a = sqt(aa); b = sqt(bb) if ok(a,aa)&&ok(b,bb) m = div(a-1,2); n = div(b-1,2) print("\e[2K"); println((m,n,u,v)) end end end end end 13 Здесь для убыстрения процесса проверки на квадрат двух чисел a 2 и b 2 из формулы (8) a 2 = v ( u 2 − v 2 ) + 1 , b 2 = u ( u 2 − v 2 ) + 1 было использовано вычисление символа Лежандра на серии простых чи- сел. Однако, таким способом было найдено только 5 уже известных нам решений. (2, 5, 5, 1) (14, 34, 17, 3) (272, 560, 110, 26) (418488, 769719, 13745, 4063) (106454, 116654, 5621, 4681) Проверялись u, v : v ≤ 10 6 , u ≤ 3 · 10 6 . Программа выводит четверки ( m, n, u, v ) . Попробуем изучить поведение остатков f (2 m + 1) и f (2 n + 1) для f ( x ) = ( x 2 − 1) 2 − 1 при делении на разные числа, в том случае когда сумма S m,n оказалась кубом натурального числа, но n − m не является кубом. Выпишем все известные нам на данный момент такие пары чисел ( m, n ) : (2, 5) (2, 22) (5, 30) (10, 14) (10, 109) (14, 34) (212, 365) (272, 560) (290, 339) (304, 6895) (555, 654) (645, 798) (1623, 15784) (3009, 16932) (4879, 54655) 14 (11169, 74170) (18550, 51674) (34227, 36076) (46689, 71890) (106454, 116654) (266784, 288240) (267902, 287122) (407525, 584349) (418488, 769719) (2984767, 5234157) (21709457,33568667) Всего их 26. Последняя пара этого списка не была вычислена нами - она была взята из незавершенной работы, на которую ведет ссылка в [2] - https://www.dropbox.com/s/v1snspj6ysq82g6/MathCubes_.pdf?dl=0 . Преобразуем их: ( m, n ) –> ( f (2 m + 1) , f (2 n + 1)) (575, 14399) (575, 4096575) (14399, 13838399) (193599, 705599) (193599, 2300161599) (705599, 22657599) (32625029375, 285540609599) (88223256575, 1579144089599) (113946753599, 212557881599) (137551974399, 36172875141222399) (1523545862399, 2936013710399) (2777822222399, 6504580966463) (111155017688063, 993215068035097599) (1312494068289599, 1315237912027474175) (9070291882086399, 142776085029643878399) (249031859116046399, 484222325845533198399) (1894708752849639999, 114084098519849639999) (21959411596501176575, 27103012911166046463) (76032080572904769599, 427371935042737921599) (2054830865163499598399, 2962961230337686670399) 15 (81051742813536862617599, 110443457117775496089599) (82418944434432179904575, 108739890109410751360575) (441305295038499182759999, 1865566307651480726759999) (490742979367888210166783, 5616295356845700661478399) (1269878035364469385412018175, 12009007878292809843005722175) (3553987258636796798346269146175, 20316850840506470662758008146175) Легко заметить, что остатки полученных чисел при делении, например, на s = 10 3 повторяются: 063, 175, 375, 399, 463, 575, 599, 783, 999. Будем искать модули s с наименьшим числом классов вычетов для заданного промежутка s ∈ [ k 1 , k 2] . function lowr(k1,k2) r = 100 l = [(2, 5),(2, 22),(5, 30),(10, 14),(10, 109),(14, 34),(212, 365), (272, 560),(290, 339),(304, 6895),(555, 654),(645, 798),(1623, 15784), (3009, 16932),(4879, 54655),(11169, 74170),(18550, 51674),(34227, 36076), (46689, 71890),(106454, 116654),(266784, 288240),(267902, 287122), (407525, 584349),(418488, 769719),(2984767, 5234157),(21709457, 33568667)] g(x) = x^2 - 1; f(x) = g(g(x)) m(p) = map(x -> (x[1]%p,x[2]%p), map(x -> (f(2*Int128(x[1])+1),f(2*Int128(x[2])+1)), l)) str = "" for i in k1:k2 l0 = m(i); l1 = map(x-> x[1],l0); l2 = map(x-> x[2],l0); rm = union(l1,l2); n = length(rm) if n<=r println((i,n)) r = n str = string(i," --> ",sort!(rm)) end end println(str) end Наилучший результат от 100 до 1000 показал модуль s = 576 , дающий всего два остатка 63 и 575. 16 julia> lowr(100,1000) (100, 4) (108, 4) (112, 3) (128, 2) (144, 2) (192, 2) (256, 2) (288, 2) (576, 2) 576 --> Int128[63, 575] Однако эффекта при поиске решений только на числах из данных двух классов вычетов мы не получим. julia> length(filter(x -> f(x)%576 in [63,575], 1:2:10^6)) 499999 Переходя к поиску среди чисел двух классов вычетов, из 500000 нечет- ных чисел будем использовать 499999 чисел, то есть практически 100% чисел. Продолжая искать при помощи программы lowr модули, дающие наименьшее количество остатков для чисел разных разрядов, находим: 2304 ==> 4 остатка, 499999 из 500000, 100% 14400 ==> 7 остатков, 366666 из 500000, 73% 115200 ==> 14 остатков, 305000 из 500000, 61% 1036800 ==> 24 остатка, 171847 из 500000, 34% 16934400 ==> 33 остатка, 80529 из 500000, 16% 305877600 ==> 41 остаток, 16009 из 500000, 3% Осуществляя поиск на меньшем количестве чисел, мы ускоряем програм- му поиска. Разумеется, таким способом мы найдем все уже известные нам реше- ния ( m, n ) , когда n − m - не куб, однако рискуем упустить какие-либо неизвестные нам случаи, когда решения могут давать новые остатки, не учтенные нами. 17 Например, если выбрать компромиссный средний из найденных способ для поиска решений ( m, n ) , среди классов вычетов по модулю 1036800, то мы получим ускорение программы поиска примерно в 3 раза, а сама программа может выглядеть так: function search(k1,k2) l0 =[575, 14399, 43775, 63999, 129599, 193599, 230399, 359999, 403199, 461375, 504063, 512063, 539199, 575999, 705599, 728063, 741375, 755199, 797183, 850175, 884799, 907775, 921599, 986175] b = 939393 l = fill(false,b) for i in 1:1000000 l[i^3%b+1] = true end cbt(a) = Int128(floor(cbrt(a))) isc(a) = a == cbt(a)^3 g(x) = x^2 - 1; f(x) = g(g(x)) if k1%2==0 k1+=1 end ll = map(x -> (div(x-1,2),f(x)),filter(x -> f(x)%1036800 in l0, Int128(k1):2:k2)) for i in 1:length(ll)-1 print("\e[2K"); print(ll[i][1]); print("\e[1G") j = i+1 ; if ll[j][1]-ll[i][1]<2 j+=1 end while j<=length(ll) z = ll[j][2] - ll[i][2] if l[z%b+1] if isc(z) print("\e[2K"); println((ll[i][1],ll[j][1])) end end j+=1 end end end Можно также попробовать и другие перечисленные выше варианты мо- дулей. Интрига заключается лишь в том, сможет ли программа найти хотя бы одно новое решение, которое можно было бы добавить к 26-ти уже имеющимся, или же нет. 18 В результате длительных поисков решений ( m, n ) , среди классов выче- тов по различным модулям не было найдено ни одного нового решения ( m, n ) , когда n − m - не куб. Для модуля 305877600 проверка m, n про- водилась вплоть до m ≤ 5 · 10 7 , n ≤ 10 8 . В связи с проведенным исследованием возникают следующие предполо- жения, которые нужно доказать или опровергнуть. Предположение 1 . Существует лишь конечное множество решений ( m, n ) , когда n − m - не куб. Предположение 2 . Существует только 26 перечисленных выше реше- ний ( m, n ) , когда n − m - не куб. Предположение 3 . Существует только 5 перечисленных выше решений ( m, n ) , удовлетворяющих формуле (8). Ссылки [1] https://web.archive.org/web/20150106144342/http://www.math.niu. edu:80/%7Erusin/known-math/97/cube.sum [2] https://mathoverflow.net/questions/199297/sum-of-consecutive-cubes [3] https://wiki5.ru/wiki/Squared_triangular_number [4] https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B5%D1%83%D0%B3% D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0% BE [5] https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87% D0%B0_%D0%BE_%D1%87%D0%B5%D1%82%D1%8B%D1%80%D1%91%D1%85_%D0%BA%D1% 83%D0%B1%D0%B0%D1%85 [6] https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D0%BE%D1%82% D0%B5%D0%B7%D0%B0_%D0%9B%D0%B0%D0%BD%D0%B4%D0%B5%D1%80%D0%B0_%E2% 80%94_%D0%9F%D0%B0%D1%80%D0%BA%D0%B8%D0%BD%D0%B0_%E2%80%94_%D0%A1% D0%B5%D0%BB%D1%84%D1%80%D0%B8%D0%B4%D0%B6%D0%B0 [7] Michael Hirschhorn. When is the sum of consecutive squares a square? // The Mathematical Gazette.  November 2011.  Т. 95.  С. 511–2.  ISSN 0025-5572 https://web.maths.unsw.edu.au/~mikeh/webpapers/paper173. pdf 19 Дополнение 1 (от 26 апреля 2023 года) Предположение 2 оказалось неверным, так как было найдено еще одно решение (1108620 , 3106188) , пропущенное при поиске. Причина пропуска была не из-за ошибок в программе, а из-за ограничения на переменную n при поиске. Решения ( m, n ) в последней версии программы искались со следующими ограничениями: 2 <= m <= 100000, n <= 100m 100000 < m <= 1100000, n <= 10m 1100000 < m <= 5200000, n <= 2m В найденном новом решении, очевидно, m > 1100000 и n > 2 m . Воз- можно есть и другие решения за пределами этих ограничений. Поиски продолжаются. 20