Целочисленные точки эллиптической кривой вида y 2 = x 3 + ( m ( m +1) 2 ) 2 Георгий Гуляев 13 апреля 2023 г. 1. Введение В работе [1] изучалась возможность представления суммы кубов после- довательных натуральных чисел в виде куба некоторого натурального числа. Для суммы кубов S m,n последовательных натуральных чисел от m+1 по n S m,n = n ∑ x = m +1 x 3 была выведена основная формула ([1] формула (1)) S m,n = T 2 n − T 2 m , где T m = m ( m +1) 2 обозначает так называемое треугольное число - [2]. Предположим, что m ∈ N - фиксировано и требуется найти такие n ∈ N чтобы сумма S m,n была кубом. Обозначив неизвестные T n = y и S m,n = x 3 , приходим к уравнению эллиптической кривой y 2 = x 3 + T 2 m (1) В данной статье мы будем исследовать это уравнение при помощи ком- пьютера и получим ряд результатов о его рациональных и целочислен- ных решениях. Общие сведения о понятии эллиптическая кривая можно найти в [7]. 1 2. Уравнение (1) и его целочисленные решения В общем виде уравнение y 2 = x 3 + a, a ∈ Z как частный пример уравнения эллиптической кривой в форме Вейер- штрасса встречается в литературе у многих авторов. Например, в [3] - раздел 1, параграф 3, теорема 3.3 или в [4] - IX.7 или в [6] - глава 5, параграф 3, пример 5 и задачи). Известно, что уравнение y 2 = x 3 + 7 не имеет решений в целых числах, а уравнение y 2 = x 3 − 2 имеет только два целочисленных решения ( x, y ) = (3 , ± 5) ([4] - IX.7 - Proposition 7.1.). А также уравнение y 2 = x 3 + 1 не имеет рациональных решений, отличных от ( − 1 , 0) , (0 , ± 1) , (2 , ± 3) , а уравнение y 2 = x 3 − 432 не имеет рациональных решений, отличных от (12 , ± 36) ([6] - глава 5, параграф 3, задачи к примеру 5). Специфика нашего уравнения (1) заключается в том, что для любого на- турального m оно всегда имеет определенное множество целочисленных решений ( x, y ) , x, y ∈ Z . Теорема 1 . Для любого m ∈ N уравнение (1) имеет решения ( x, y ) : (0 , ± T m ) , ( m + 1 , ± T m +1 ) , (2 · T m , ± (2 m + 1) · T m ) , ( − m, ± ( T m − m )) Доказательство . Каждый из четырех случаев доказывается подстанов- кой x, y в уравнение (1) . Первый случай очевиден, второй: T 2 m +1 = ( m + 1) 3 + T 2 m = ⇒ ( m + 1) 2 ( m + 2) 2 4 = ( m + 1) 3 + m 2 ( m + 1) 2 4 = ⇒ ( m + 2) 2 = 4( m + 1) + m 2 = ⇒ ( m + 2) 2 = ( m + 2) 2 . Третий: (2 m + 1) 2 · T 2 m = 8 · T 3 m + T 2 m = ⇒ (2 m + 1) 2 = 8 · T m + 1 = ⇒ (2 m + 1) 2 = 4 m ( m + 1) + 1 = ⇒ (2 m + 1) 2 = (2 m + 1) 2 . Четвертый: ( T m − m ) 2 = − m 3 + T 2 m = ⇒ T 2 m − 2 m · T m + m 2 = − m 3 + T 2 m = ⇒ − m · m ( m + 1) + m 2 = − m 3 = ⇒ − m 3 = − m 3 . Теорема доказана. 2 Из уравнения (1) очевидно, что, если ( x, y ) его решение, то и ( x, − y ) также будет его решением, то есть график эллиптической кривой сим- метричен относительно оси абсцисс. Поэтому имеет смысл рассматривать только те точки ( x, y ) , где y ≥ 0 - остальные будут им симметричны относительно оси OX . (0 , T m ) , ( m + 1 , T m +1 ) , (2 · T m , (2 m + 1) · T m ) , ( − m, ( T m − m )) В качестве примера ниже приведены эти точки для m от 1 до 20. m = 1, (0, 1), (2, 3), (2, 3), (-1, 0) m = 2, (0, 3), (3, 6), (6, 15), (-2, 1) m = 3, (0, 6), (4, 10), (12, 42), (-3, 3) m = 4, (0, 10), (5, 15), (20, 90), (-4, 6) m = 5, (0, 15), (6, 21), (30, 165), (-5, 10) m = 6, (0, 21), (7, 28), (42, 273), (-6, 15) m = 7, (0, 28), (8, 36), (56, 420), (-7, 21) m = 8, (0, 36), (9, 45), (72, 612), (-8, 28) 3 m = 9, (0, 45), (10, 55), (90, 855), (-9, 36) m = 10, (0, 55), (11, 66), (110, 1155), (-10, 45) m = 11, (0, 66), (12, 78), (132, 1518), (-11, 55) m = 12, (0, 78), (13, 91), (156, 1950), (-12, 66) m = 13, (0, 91), (14, 105), (182, 2457), (-13, 78) m = 14, (0, 105), (15, 120), (210, 3045), (-14, 91) m = 15, (0, 120), (16, 136), (240, 3720), (-15, 105) m = 16, (0, 136), (17, 153), (272, 4488), (-16, 120) m = 17, (0, 153), (18, 171), (306, 5355), (-17, 136) m = 18, (0, 171), (19, 190), (342, 6327), (-18, 153) m = 19, (0, 190), (20, 210), (380, 7410), (-19, 171) m = 20, (0, 210), (21, 231), (420, 8610), (-20, 190) Кроме целочисленных точек указанных в теореме 1, эллиптическая кри- вая (1), в зависимости от m, может содержать или нет какое-то количе- ство дополнительных точек ( x, y ) с целыми координатами. Например, при помощи компьютера для случая m = 4879 были обнару- жены следующие точки ( x, y ) (здесь для наглядности выбраны только те точки, для которых x > 0 , y > 0 ), принадлежащие кривой (1): (4880, 11909640) (6360, 11915560) (7625, 11923365) (9660, 11942560) (22304, 12361992) (29036, 12891984) (34440, 13511960) (40016, 14345736) (52521, 16929269) (59840, 18867960) (68264, 21443688) (73185, 23102065) (83640, 26959960) (99416, 33530664) (113960, 40270440) (114905, 40728765) (248880, 124730360) 4 (307496, 170928744) (390320, 244145160) (510204, 364625792) (610080, 476667640) (700280, 586134360) (785400, 696145240) (1161440, 1251741960) (1306620, 1493611840) (1593720, 2011989160) (1913265, 2646470665) (4488680, 9509951640) (6162464, 15297896712) (9758000, 30481845240) (23809520, 116178552840) (24885560, 124142683560) (355120040, 6692105384040) (151702157576, 59086414439327976) Только одна из этих точек, а именно (1306620 , 1493611840) приводит к решению задачи о представлении суммы кубов последовательных нату- ральных чисел начиная с m +1 в виде куба x 3 , так как только в этом слу- чае y является треугольным числом y = 1493611840 = T n , где n = 54655 . То есть, эта точка дает нам равенство: 4880 3 + 4881 3 + 4882 3 + ... + 54655 3 = 1306620 3 . Для случая m = 4879 обнаружено много решений, а вот уже для следу- ющего m = 4880 никаких новых точек, дополняющих точки из теоремы 1, обнаружить не удалось. Таким образом, встает вопрос, как искать эти дополнительные точки, когда они есть? Пусть m ∈ N и ( x, y ) , x, y ∈ Z некоторое решение уравнения (1) , обозна- чим через d наибольший общий делитель чисел x, y и T m . d = ( x, y, T m ) Существуют числа p ∈ N и k 1 , k 2 ∈ Z такие, что T m = p · d, x = k 1 · d, y = k 2 · d 5 Подставляя ( x, y ) и T m в уравнение (1) и сокращая его на d 2 , получаем: k 2 2 = k 3 1 · d + p 2 (2) В тех случаях, когда d > 1 и достаточно большое, вычисления по поиску точек ( x, y ) для заданного m по формуле (2) существенно упрощаются по сравнению с формулой (1). Поскольку k 1 при этом оказывается до- статочно мал, то подбор его на компьютере не занимает много времени. Например, для приведенной выше точки для m = 4879 , имеем: ( x, y ) = (1306620 , 1493611840) , T m = 11904760 , d = gcd (1306620 , 1493611840 , 11904760) = 145180 , p = T m d = 11904760 145180 = 82 , k 1 = x d = 1306620 145180 = 9 , k 2 = y d = 1493611840 145180 = 10288 Предположим теперь, что эта точка ( x, y ) нам неизвестна и мы пытаемся ее найти, используя уравнение (2). Действуем по алгоритму: 1. По заданному m вычисляем число T m . 2. Перебираем все делители T m , представляя его в виде T m = p · d . 3. Подбираем k 1 так, чтобы правая часть уравнения (2) была квадратом. 4. Находим из уравнения k 2 и вычисляем ( x, y ) = ( k 1 · d, k 2 · d ) . Разумеется, при d = 1 этот алгоритм не упрощает вычисления (уравне- ния (1) и (2) совпадают). Однако на практике такие точки встречаются довольно редко (например, для всех m ∈ [2 , 100] встретилось только 17 точек с d = 1 из 684). Кроме того, в дальнейшем мы не будем полагаться только на этот алго- ритм, а добавим к нему и другие способы получения точек. 6 function find(m,k) function divs(n) !isprime(n) || return [1,n] d = [1] for (p, k) in factor(n) c = [p^i for i in 0:k] d = d*c’ d = reshape(d, length(d)) end sort!(d) end sqt(a) = Int128(floor(sqrt(a))) cbt(a) = Int128(floor(cbrt(a))) t(a) = div(a*(a+1),2) tm = t(Int128(m)); tm2 = tm^2; l = Vector{Tuple{Int128,Int128}}() for (p, d) in map(x -> (x,div(tm,x)), divs(tm)) for k1 in filter(x -> gcd(x,p)==1,-cbt(p^2/d):k) kk2 = Int128(k1)^3*d+p^2 k2 = sqt(kk2) if k2^2==kk2 xy = (k1*d,k2*d) if !(xy in l) push!(l,xy) end end end end sort!(l) end Функция f ind ( m, k ) написанная на языке Julia реализует данный алго- ритм. В качестве аргументов мы вводим числа m и k - верхнее ограни- чение для k 1 и в результате получаем список целочисленных решений ( x, y ) уравнения (1). Список будет содержать только те точки эллиптической кривой (1), для которых y ≥ 0 , так как остальные получаются симметрией относительно оси абсцисс. Рассмотрим некоторые примеры. 7 find(2,10000000) [(-2, 1), (0, 3), (3, 6), (6, 15), (40, 253)] find(5,10000000) [(-6, 3), (-5, 10), (0, 15), (4, 17), (6, 21), (10, 35), (15, 60), (30, 165), (60, 465), (180, 2415), (336, 6159), (351, 6576), (720114, 611085363)] find(4879,10000000) [(-51240, 2681560), (-49776, 4289032), (-49300, 4679760), (-36295, 9690765), (-27880, 10956840), (-20664, 11528216), (-17136, 11691512), (-12480, 11822840), (-11224, 11845224), (-4879, 11899881), (0, 11904760), (4880, 11909640), (6360, 11915560), (7625, 11923365), (9660, 11942560), (22304, 12361992), (29036, 12891984), (34440, 13511960), (40016, 14345736), (52521, 16929269), (59840, 18867960), (68264, 21443688), (73185, 23102065), (83640, 26959960), (99416, 33530664), (113960, 40270440), (114905, 40728765), (248880, 124730360), (307496, 170928744), (390320, 244145160), (510204, 364625792), (610080, 476667640), (700280, 586134360), (785400, 696145240), (1161440, 1251741960), (1306620, 1493611840), (1593720, 2011989160), (1913265, 2646470665), (4488680, 9509951640), (6162464, 15297896712), (9758000, 30481845240), (23809520, 116178552840), (24885560, 124142683560), (355120040, 6692105384040)] find(4880,10000000) [(-4880, 11904760), (0, 11909640), (4881, 11914521), (23819280, 116249996040)] Для разных m примерно в половине случаев в списке содержатся только четыре точки из теоремы 1 и новых не найдено, как это показано на примере для m = 4880 . Заметим также, что точку (151702157576, 59086414439327976), найден- ную ранее другим способом для m = 4879 , наша функция упустила. Связяно это исключительно с верхней границей для k 1 . Мы перебирали целые k 1 до 10000000, а для данной точки этого оказалось недостаточно. 8 Действительно, gcd (151702157576 , 59086414439327976 , 11904760) = 8296 , k 1 = 151702157576 8296 = 18286181 > 10000000 . Возникает вопрос, как же выбирать эту границу, чтобы ничего не упу- стить и не упустили ли мы и какие-либо другие целые точки для того же m = 4879 , например. Из теоремы Зигеля ([5] - теорема 2.1) мы знаем, что количество целочис- ленных точек на эллиптической кривой (1) для любого m будет конечно. Есть еще гипотеза Холла о верхней границе для | x | ([4] - IX.7, Conjecture 7.4.), но она не доказана, да и для нашей задачи поиска целочисленных точек малопрактична. Будем использовать этот алгоритм только для получения начального списка целочисленных точек, после чего для нахождения остальных при- меним многократное попарное сложение всех точек списка. Формулы сложения и удвоения точек на эллиптической кривой в форме Веерштрасса y 2 = x 3 + ax + b : P ( x 1 , y 1 ) + Q ( x 2 , y 2 ) = R ( x 3 , y 3 ) , 2 P ( x 1 , y 1 ) = S ( x 4 , y 4 ) x 3 = ( y 2 − y 1 x 2 − x 1 ) 2 − x 1 − x 2 , y 3 = y 2 − y 1 x 2 − x 1 ( x 1 − x 3 ) − y 1 x 4 = ( 3 x 2 1 + a 2 y 1 ) 2 − 2 x 1 , y 4 = y 2 − y 1 x 2 − x 1 ( x 1 − x 4 ) − y 1 Заметим, что в нашем случае a = 0 , b = T 2 m и реализуем эти формулы на языке Julia: 9 function sm(p1,p2) x1 = p1[1]; y1 = p1[2] if p1==p2 k = (3*x1^2)//(2*y1) x3 = k^2 - 2*x1 else x2 = p2[1]; y2 = p2[2] k = (y2-y1)//(x2-x1) x3 = k^2- x1-x2 end y3 = k*(x1-x3)-y1 (x3,y3) end Понятно, что, вообще говоря, при сложении целочисленных точек мы будем получать точки с рациональными координатами. Здесь расчет на то, что какие-то из них после сокращения дробей превратятся в целые и добавятся к первоначальному списку. Вносим необходимые изменения в программу f ind : function find(m,k) upd(d) = if denominator(d)==1 numerator(d) else d end function sm(p1,p2) x1 = p1[1]; y1 = p1[2] if p1==p2 k = (3*x1^2)//(2*y1) x3 = k^2 - 2*x1 else x2 = p2[1]; y2 = p2[2] k = (y2-y1)//(x2-x1) x3 = k^2- x1-x2 end y3 = k*(x1-x3)-y1 (upd(x3),upd(y3)) end 10 function divs(n) !isprime(n) || return [1,n] d = [1] for (p, k) in factor(n) c = [p^i for i in 0:k] d = d*c’ d = reshape(d, length(d)) end sort!(d) end sqt(a) = Int128(floor(sqrt(a))) cbt(a) = Int128(floor(cbrt(a))) t(a) = div(a*(a+1),2) tm = t(Int128(m)); tm2 = tm^2; l = Vector{Tuple{Int128,Int128,Int128}}() for (p, d) in map(x -> (x,div(tm,x)), divs(tm)) for k1 in filter(x -> gcd(x,p)==1,-cbt(p^2/d):k) kk2 = Int128(k1)^3*d+p^2 k2 = sqt(kk2) if k2^2==kk2 xy = (k1*d,k2*d,d) if !(xy in l) push!(l,xy) end end end end l = map(x -> (big(x[1]),big(x[2])),l) ll = []; len = 0 while length(l)<=1000&&len<length(l) len = length(l); ll = [] for i in 1:len,j in i:len s = sm(l[i],l[j]) if denominator(s[2])>0&&denominator(s[2])<=10^20 push!(ll,s); push!(ll,(s[1],-s[2])) end end l = union(l,ll) end 11 l = filter(x -> denominator(x[2])==1&&numerator(x[2])>0, l) sort!(l) end После получения первоначального списка целочисленных точек, мы по- стоянно складываем попарно все точки друг с другом и добавляем каж- дый результат сложения в список, убирая возможные повторы. При этом, используем следующие ограничения: не добавляем точки для которых знаменатели координат > 10 20 и заканчиваем процесс, если дли- на списка превзошла 1000 или же, если новых точек уже больше не по- является. Ясно, что параметры этих ограничений можно менять в зависимости от величины m . Теперь мы не обязаны использовать слишком большое k и функция легко находит ранее потерянную точку: julia find(4879,10000) 45-element Vector{Any}: (-51240, 2681560) (-49776, 4289032) ... (355120040, 6692105384040) (151702157576, 59086414439327976) При помощи измененной программы f ind можно провести некоторые наблюдения. Ниже приводится распределение количества точек с целочисленными ко- ординатами для m ∈ [2 , 1500] (n - число точек, cnt - сколько раз такое число встретилось). 4 точки - это точки теоремы 1, то есть это означает, что новых точек найдено и добавлено не было. n - cnt ------- 4 - 822 5 - 116 6 - 105 7 - 143 12 8 - 101 9 - 55 10 - 32 11 - 23 12 - 13 13 - 22 14 - 14 15 - 10 m = 15,110,111,114,140,259,434,558,782,798 16 - 8 m = 143,174,209,285,665,710,759,1364 17 - 8 m = 80,176,220,455,527,559,803,934 18 - 6 m = 33,65,304,735,1245,1429 19 - 5 m = 69,90,405,1110,1375 21 - 1 m = 369 22 - 2 m = 1239,1269 23 - 1 m = 869 24 - 1 m = 374 25 - 1 m = 545 26 - 2 m = 255,805 27 - 3 m = 189,873,1330 29 - 2 m = 384,390 33 - 2 m = 329,1104 37 - 1 m = 714 Число точек n = 20 , 28 , 30 , 31 , 32 , 34 , 35 , 36 - пока не встретилось ни разу, но это ни о чем не говорит, так как наблюдений было мало. Вот дальней- шее распределение количества точек для m ∈ [1501 , 15000] (приведены только случаи, когда n > 19 ): n - cnt -------- 20 - 8 m = 2100,2134,2145,2880,4619,5564,12440,12810 21 - 8 m = 2345,3944,4465,8554,11136,13310,13629.13805 22 - 7 m = 1539,1694,2001,2046,3444,4047,5015 23 - 5 m = 2914,6965,9860,10373,11039 24 - 6 m = 1715,5249,8319,8645,10335,14789 25 - 3 m = 10664,10989,13904 26 - 3 m = 2618,9039,10395 27 - 5 m = 1785,2210,4991,9009,10290 13 28 - 2 m = 10064,10735 29 - 1 m = 7215 30 - 2 m = 4640,14705 31 - 2 m = 2834,4185 32 - 2 m = 3564,10879 36 - 1 m = 12089 37 - 1 m = 11814 38 - 1 m = 2464 45 - 1 m = 4879 50 - 1 m = 7314 67 - 1 m = 4784 76 - 1 m = 10625 Некоторые m дают существенно больше целочисленных точек, чем дру- гие находящиеся рядом, например, m = 714 - 37 точек, m = 4784 - 67 точек, m = 4879 - 45 точек, m = 7314 - 50 точек, m = 10625 - 76 точек. До 50000 были еще найдены m = 21504 - 91 точка, m = 25839 - 70 точек и m = 45695 - 57 точек. Мы не доказали, что при помощи нашей программы находим все цело- численные точки для того или иного m , возможно, какие-то отдельные из них могли быть упущены, но общая тенденция именно такова. Рассмотрим разложения на простые множители T m для m , дающих наи- большее число целочисленных точек: m = 714 = 2*3*7*17, t(714) = 3*5*7*11*13*17 m = 4784 = 2^4 * 13*23, t(4784) = 2^3 * 3*5*11*13*23*29 m = 4879 = 7*17*41, t(4879) = 2^3 * 5*7*17*41*61 m = 7314 = 2*3*23*53, t(7314) = 3*5*7*11*19*23*53 m = 10625 = 5^4 * 17, t(10625) = 3 * 5^4 * 7*11*17*23 m = 21504 = 2^10 * 3*7, t(21504) = 2^9 * 3*5*7*11*17*23 m = 25839 = 3^4 * 11*29, t(25839) = 2^3 * 3^4 * 5*11*17*19*29 m = 45695 = 5*13*19*37, t(45695) = 2^6 * 3*5*7*13*17*19*37 Можно заметить, что во всех этих случаях разложение T m имеет много небольших простых чисел. Если ограничиться числами m для, которых T m в разложении имеет не менее 6 различных простых числа, которые не превосходят, например, 100, то мы получим не только все эти случаи, 14 но и, вероятно, некоторые интересные другие (если рассматривать m > 50000 ). Этим способом были еще найдены: m = 643125 - 62 точки, m = 58310 - 60 точек, m = 194480 - 54 точки и другие, однако рекорд числа m = 21504 - 91 точка, побит не был. Эллиптические кривые (1) для различных m , очевидно, не пересекаются друг с другом. Если n > m , то T n > T m и x 3 + T 2 n > x 3 + T 2 m для всех x ∈ R . Отметим, что для каждого фиксированного m область определения (1) в R : x ≥ − 3 √ T 2 m . Прямая x = 0 пересекает кривые (1) в точках (0 , ± T m ) . Это первый слу- чай целочисленных решений из теоремы 1. Заметим, что точки второго и четвертого случая решений теоремы 1 (при y > 0 ): ( m + 1 , T m +1 ) , ( − m, T m − m ) лежат на пересечении семейства эллиптических кривых (1) с параболой y = x ( x +1) 2 . Ну и последний третий случай решений (2 T m , (2 m + 1) T m дает нам кри- вую y = x √ 4 x +1 2 , на пересечении с которой и лежат точки этих решений. 3. Рациональные точки семейства кривых (1) Согласно теореме Морделла ([6] - глава 5, параграф 3, задача 2) урав- нение (1) имеет бесконечное множество рациональных решений, если T 2 m свободно от 6-х степеней и не равно 1 или -432. Таким образом, достаточно потребовать m > 1 и, чтобы T m - содержало в разложении на простые множители степени не выше второй, для того, чтобы кривая (1) содержала бесконечное множество точек с рациональ- ными координатами. Не теряя общности, будем искать рациональные решения уравнения (1) в виде ( a q 2 , b q 3 ) , a ∈ Z , b ∈ Z , q ∈ N (3) Обозначим через d наибольший общий делитель чисел a, b и T m . d = ( a, b, T m ) 15 Тогда существуют числа p ∈ N и k 1 , k 2 ∈ Z такие, что T m = p · d, a = k 1 · d, b = k 2 · d (4) Подставляя (3) в уравнение (1) с учетом (4) и сокращая его на d 2 , при- ходим к уравнению: k 2 2 = k 3 1 · d + ( p ∗ q 3 ) 2 (5) Уравнение (5) является обобщением уравнения (2), в которое оно пре- вращается при q = 1 . Алгоритм поиска рациональных точек на эллип- тической кривой (1) подобен алгоритму для целочисленных точек: 1. По заданному m вычисляем число T m . 2. Перебираем все делители T m , представляя его в виде T m = p · d . 3. Подбираем k 1 и q так, чтобы правая часть уравнения (5) была квад- ратом. 4. Находим из уравнения k 2 и вычисляем ( x, y ) = ( k 1 · d q 2 , k 2 · d q 3 ) . Программа, реализующая данный алгоритм, аналогичная первой версии f ind ( m, k ) , может выглядеть, например, так: function findr(m,r,s) upd(d) = if denominator(d)==1 numerator(d) else d end function divs(n) !isprime(n) || return [1,n] d = [1] for (p, k) in factor(n) c = [p^i for i in 0:k] d = d*c’ d = reshape(d, length(d)) end sort!(d) end sqt(a) = Int128(floor(sqrt(a))) cbt(a) = Int128(floor(cbrt(a))) t(a) = div(a*(a+1),2) tm = t(Int128(m)); tm1 = t(Int128(m+1)); tm2 = (2*m+1)*tm; tm3 = tm-m l = Vector{Tuple{Rational{Int128},Rational{Int128}}}() push!(l,(Int128(0),tm),(Int128(0),-tm),(Int128(m+1),tm1),(Int128(m+1), 16 -tm1),(2*tm,tm2),(2*tm,-tm2),(-m,tm3),(-m,-tm3)) println(string("m = ",m,", Tm = ",tm)) println("------------------------") for (p,d) in map(x -> (x,div(tm,x)), divs(tm)) p2 = Int128(p)^2 print("\e[2K"); print(string("d = ",d,", длина списка = ",length(l))); print(" for q in 1:r q2 = Int128(q)^2; q3 = q2*q for k1 in -s:s kk2 = Int128(k1)^3*d+(p*q3)^2 if kk2 >= 0 k2 = sqt(kk2) if k2^2==kk2 xy = (k1*d//q2,k2*d//q3) if !(xy in l) push!(l,xy) end end end end end end print("\e[2K") l = map(x -> (upd(x[1]),upd(x[2])), filter(x -> x[2]>=0,l)) l = map(x -> (x[2]),sort!(map(x -> (denominator(x[1]),x),l))) end 17 Примеры ее использования: julia> findr(5,100,1000) m = 5, Tm = 15 ------------------------ 31-element Vector{Tuple{Real, Real}}: (-6, 3) (-5, 10) (0, 15) (4, 17) (6, 21) (10, 35) (15, 60) (30, 165) (60, 465) (180, 2415) (336, 6159) (351, 6576) (-15//4, 105//8) (9//4, 123//8) (-20//9, 395//27) (550//9, 12905//27) (385//16, 7615//64) (99//25, 2118//125) (-264//49, 2841//343) (-80//49, 5095//343) (105//64, 7755//512) (130//81, 11035//729) (-450//121, 17535//1331) (840//121, 31485//1331) (-270//169, 32655//2197) (5115//289, 373170//4913) (7905//784, 776145//21952) (2775//841, 393960//24389) (-5610//961, 152085//29791) (14280//961, 1763985//29791) (-4350//1369, 703545//50653) 18 julia> findr(555,1000,1000) m = 555, Tm = 154290 ------------------------ 40-element Vector{Tuple{Real, Real}}: (-2856, 22578) (-1184, 148814) (-555, 153735) (0, 154290) (285, 154365) (556, 154846) (2805, 214185) (5004, 386142) (6660, 564990) (66720, 17234610) (233100, 112541790) (308580, 171416190) (1172604, 1269775842) (1301040, 1484007090) (38961//4, 7788759//8) (-25715//9, 591445//27) (4329//16, 9878667//64) (-123395//49, 30361645//343) (-31275//49, 52631655//343) (77145//64, 81850845//512) (1748620//121, 2321395910//1331) (-450360//169, 153493530//2197) (1323280//169, 1559506330//2197) (1311465//196, 1560411915//2744) (144004//225, 523588258//3375) (-808080//289, 216642030//4913) (-678876//289, 511594782//4913) (1440040//289, 1887018130//4913) (-102860//361, 1057760810//6859) (1693020//529, 2894267730//12167) (2674360//729, 5324496470//19683) (3409809//784, 7149598023//21952) (9936276//841, 31546225974//24389) (-411440//1521, 9148522690//59319) 19 (12728925//2209, 48156146205//103823) (-8701956//3025, 39837678//166375) (-8624811//5929, 65726722263//456533) (-32092320//11881, 82895234010//1295029) (-20983440//22801, 522444300510//3442951) (-152129940//89401, 3672752949510//26730899) Программа эта для больших m, r и s работает довольно долго и находит не так много точек, поэтому ее опять можно использовать только для получения первоначального списка точек, а остальные получать, как и ранее, сложением. Так как цель состоит в как можно более быстром получении первона- чального списка рациональных точек, то можно не перебирать все дели- тели T m , а ограничиться только одним - самим T m . Как правило, именно этот делитель дает наибольший прирост новых рациональных и целых точек. Лемма . Любая рациональная точка ( x, y ) эллиптической кривой (1) мо- жет быть представлена в виде: ( a · T m q 2 , b · T m q 3 ) , (6) где q ∈ N , a, b ∈ Z . Доказательство . Пусть ( r s , u v ) - произвольное решение уравнения (1). Умножая числители и знаменатели дробей на одинаковые множители, их легко можно привести к виду ( a · T m w 2 , b · T m z 3 ) (7) Покажем на примере первой дроби. Сначала (если r не ноль) домно- жим числитель дроби r s до наименьшего общего кратного [ r, T m ] , то есть умножим на k 1 = [ r,T m ] r , r s = r · k 1 s · k 1 = a 1 · T m s · k 1 . Затем, домножим знаменатель полученной дроби до квадрата натураль- ного числа. Если, например, s · k 1 = d 2 · t , то умножим числитель и знаменатель на t и дробь примет вид из формулы (7). 20 Аналогично приводим вторую дробь к виду из формулы (7). Далее, если w не равно z , то находим q = [ w, z ] и домножаем первую дробь до q 2 , а вторую до q 3 в знаменателе. Лемма доказана. Подставляя координаты точки (6) в уравнение (1) и сокращая на T 2 m , приводим его к виду: b 2 = a 3 · T m + q 6 (8) Ну и, как результат, мы получаем основную рабочую программу для вычисления как целочисленных, так и рациональных точек на эллипти- ческих кривых (1), которую можно использовать для дальнейших иссле- дований. function findall(m,r,s) # q <= r, a <= s upd(d) = if denominator(d)==1 numerator(d) else d end sqt(a) = Int128(floor(sqrt(a))) cbt(a) = Int128(floor(cbrt(a))) function sm(p1,p2) x1 = p1[1]; y1 = p1[2] if p1==p2 k = (3*x1^2)//(2*y1) x3 = k^2 - 2*x1 else x2 = p2[1]; y2 = p2[2] k = (y2-y1)//(x2-x1) x3 = k^2- x1-x2 end y3 = k*(x1-x3)-y1 (x3,y3) end max = Int128(10)^20 t(x) = div(x*(x+1),2) tm = t(Int128(m)); tm1 = t(Int128(m+1)); tm2 = (2*m+1)*tm; tm3 = tm-m l = Vector{Tuple{Rational{Int128}, Rational{Int128}}}(); cbm = cbt(tm) push!(l,(Int128(0),tm),(Int128(0),-tm),(Int128(m+1),tm1),(Int128(m+1),-tm1), (2*tm,tm2),(2*tm,-tm2),(-m,tm3),(-m,-tm3)) 21 for q in 1:r print("\e[2K"); print(string("q = ",q)); print("\e[1G") q2 = Int128(q)^2; q3 = q2*q for a in -div(q2,cbm):s x = (a*tm)//(q2) if length(filter(z -> z[1]==x,l))==0 b2 = Int128(a)^3*tm+q3^2 if b2>=0 b = sqt(b2) if b^2==b2 y = (b*tm)//(q3) push!(l,(x,y)); push!(l,(x,-y)) end end end end end l = map(x -> (big(numerator(x[1]))//big(denominator(x[1])), big(numerator(x[2]))//big(denominator(x[2]))),l) print("\e[2K"); len = 0 while length(l)<1000&&len<length(l) len = length(l); ll = Vector{Tuple{Rational{BigInt}, Rational{BigInt}}}() for i in 1:len,j in i:len s = sm(l[i],l[j]) if denominator(s[2])>0&&denominator(s[2]) <= max push!(ll,s); push!(ll,(s[1],-s[2])) end end l = union(l,ll) end l = map(x -> (upd(x[1]),upd(x[2])), filter(x -> x[2]>=0,l)) l = map(x -> (x[2]),sort!(map(x -> (denominator(x[1]),x),l))) end При ограничении на знаменатели: не добавлять в список решение ( x, y ) , если знаменатели x или y превосходят 10 20 , эта программа находит сле- дующее количество точек: 22 findall(4879,10000,20000) - 2381 рациональных, из них 45 целых findall(4784,10000,20000) - 3089 рациональных, из них 67 целых findall(10625,10000,20000) - 3870 рациональных, из них 76 целых findall(21504,10000,20000) - 3965 рациональных, из них 91 целая 4. Применение к задаче о сумме кубов Как мы уже видели, при фиксированном m , если ( x, y ) точка на эл- липтической кривой (1) и x, y ∈ N , то она приводит к решению задачи представления суммы последовательных кубов в виде куба натурально- го числа ([1]) только в том случае, когда для некоторого n, y = T n , то есть, когда y - треугольное число. Вот начальные точки ( x, y ) , приводящих к решению задачи о сумме ку- бов ( m, n ) : (m, n) (x,y) ((2, 5), (6, 15)) ((2, 22), (40, 253)) ((5, 30), (60, 465)) ((5, 69), (180, 2415)) ((10, 14), (20, 105)) ((10, 109), (330, 5995)) ((14, 34), (70, 595)) ((33, 158), (540, 12561)) ((212, 365), (1581, 66795)) ((212, 555), (2856, 154290)) ((272, 560), (2856, 157080)) ((290, 339), (1155, 57630)) ((304, 6895), (82680, 23773960)) ((405, 917), (5544, 420903)) ((555, 654), (2805, 214185)) ((645, 798), (3876, 318801)) ((1133, 2133), (16830, 2275911)) ((1623, 15784), (249424, 124575220)) ((1734, 3065), (27060, 4698645)) ((3009, 16932), (273819, 143354778)) ((3605, 5802), (62244, 16834503)) 23 ((4879, 54655), (1306620, 1493611840)) ((4965, 7709), (90090, 29718195)) ((8789, 12885), (175440, 83018055)) ... Например, в первой строке m = 2 и y = 15 оказалось равным T 5 , поэтому эта точка дала решение ( m, n ) = (2 , 5) и, как следствие, равенство: 3 3 + 4 3 + 5 3 = 6 3 Сумма последовательных кубов от m + 1 по n как раз будет равна x 3 в соответствии с уравнением (1). К сожалению, 8-ми известных точек из теоремы 1 оказалось недоста- точно, для того чтобы их попарным сложением обнаружить именно ту точку, которая могла бы дать нам решение задачи о сумме кубов. Необходимо каким-то способом найти хотя бы одну такую, вообще го- воря, рациональную точку, которая в сумме с одной из точек теоремы 1 дала бы нам целочисленную точку, приводящую к решению задачи о сумме кубов. Разумеется в том случае, если такое решение существует. Продемонстрируем на примере m = 212 . Для данного m были найде- ны две точки ( x, y ) : (1581 , 66795) и (2856 , 154290) , приводящие к двум решениям задачи о сумме кубов ( m, n ) : (212 , 365) и ( 212 , 555) . Итак, m = 212 , T m = 22578 , T m +1 = 22791 , 2 · T m = 45156 , (2 m + 1) · T m = 9595650 . По теореме 1 для данного m имеем следующие 8 точек, лежащие на кривой (1): (0 , 22578) , (0 , − 22578) , (213 , 22791) , (213 , − 22791) , ( − 212 , 22366) , ( − 212 , − 22366) , (45156 , 9595650) , (45156 , − 9595650) При помощи программы findall из параграфа 3, для m = 212 получим список рациональных точек лежащих на кривой (1), а затем при помо- щи другой программы найдем в этом списке точки дающие в сумме с точками теоремы 1, две точки, приводящие к решению задачи о сумме кубов. 24 (1581,66795)= (0,22578) + (466612/289,-337488418/4913) = (0,-22578) + (-767652/961,-7066914/29791) = (213,22791) + (14408385/5776,-55582686753/438976) = (213,-22791) + (-27335/36,1832723/216) = (-212,22366) + (133560/121,-57319818/1331) = (-212,-22366) + (-20059440/26569,-38591593734/4330747) = (45156,9595650) + (2980296/1225,5235318906/42875) = (45156,-9595650) + (186464176/172225,3014508812174/71473375) (2856,154290)= (0,22578) + (119139/196,-104434539/2744) = (0,-22578) + (-210728/289,54285038/4913) = (213,22791)+ (1420,-58078) = (213,-22791) + (-460706220/776161,11856271216098/683797841) = (-212,22366) + (395022780/588289,-12861865229214/451217663) = (-212,-22366) + (-795,2703) = (45156,9595650) + (2542760701/497025,128464567143949/350402625) = (45156,-9595650) + (45156/25,10002054/125) Таким образом, для каждой точки из теоремы 1, нашлась рациональная точка, дающая в сумме нужную нам точку. Две из них оказались даже целочисленными. Понятно, что для получения решения сложением для каждого такого случая достаточно найти хотя бы одну точку из восьми. 25 Рассмотрим процесс поиска точек на схематичном графике. Пусть A = (0 , T m ) и B = (0 , − T m ) . Далее, пусть C - искомая точка, дающая решение задачи о сумме кубов. Нам нужно найти такую точку D , чтобы A + D = C . Аналогично, для точки B нам нужно найти такую точку F , чтобы B + F = C . Из этой схемы понятно, что, если D = ( x, y ) , то x > 0 , а y < 0 . Для точки F координата x < 0 , а вот y уже может быть любого знака. Приведенные выше примеры это подтверждают. 26 Для первой точки C = (1581 , 66795) имеем: D (466612 / 289 , − 337488418 / 4913) , F ( − 767652 / 961 , − 7066914 / 29791) , а для второй C = (2856 , 157080) : D (191913 / 196 , − 104434539 / 2744) , F ( − 210728 / 289 , 54285038 / 4913) Теорема 2 . Пусть m, a, b, q ∈ N , тогда координаты суммы точек C ( x, y ) = A (0 , T m ) + B ( a · T m q 2 , − b · T m q 3 ) , лежащих на кривой (1) могут быть вычислены по формуле: x = 2 q ( b + q 3 ) a 2 , y = ( b + q 3 )( b + 3 q 3 ) a 3 (9) Доказательство . По формуле сложения точек эллиптической кривой: x = k 2 − x 1 − x 2 , y = k · ( x 1 − x 3 ) − y 1 , k = y 2 − y 1 x 2 − x 1 В нашем случае, y 2 − y 1 = − b · T m q 3 − T m = − T m · ( b + q 3 ) q 3 , x 2 − x 1 = a · T m q 2 k = y 2 − y 1 x 2 − x 1 = − b + q 3 q · a , x = ( b + q 3 ) 2 q 2 · a 2 − a · T m q 2 = ( b + q 3 ) 2 − a 3 · T m q 2 · a 2 Используем теперь тот факт, что точка B находится на эллиптической кривой (1), то есть ее координаты удовлетворяют уравнению этой кривой и, как следствие этого, имеет место формула (8), согласно которой a 3 · T m = b 2 − q 6 = ( b + q 3 )( b − q 3 ) С учетом этого, x = ( b + q 3 ) 2 − ( b + q 3 )( b − q 3 ) q 2 · a 2 = ( b + q 3 )( b + q 3 − b + q 3 ) q 2 · a 2 = 2 q ( b + q 3 ) a 2 27 Далее, y = − b + q 3 q · a · ( 0 − 2 q ( b + q 3 ) a 2 ) − T m = 2( b + q 3 ) 2 − a 3 · T m a 3 = 2( b + q 3 ) 2 − ( b + q 3 )( b − q 3 ) a 3 = ( b + q 3 )(2 b + 2 q 3 − b + q 3 ) a 3 = ( b + q 3 )( b + 3 q 3 ) a 3 Теорема доказана. Хотя в формулах (9) отсутствует m , это не означает, что точка с коор- динатами (9) будет находиться на кривой (1) для любого m . Слагаемые A и B задают эллиптическую кривую, на которой они лежат сами и на которой будет лежать их сумма. В точке A уже присутствует m , а для того чтобы B лежала на кривой (1), должно выполняться равенство (8). Таким образом, формулы (9) будут давать координаты точки на кривой (1) только в том случае, когда a, b, q связаны с m формулой (8). Рассмотрим еще одно любопытное преобразование: X = 2 x y − T m · T m , Y = y + 3 · T m y − T m · T m (10) Оно взаимно-однозначно отображает плоскость R 2 с вырезанной прямой y = T m на саму себя, при этом обратное отображение в точности совпа- дает с прямым: x = 2 X Y − T m · T m , y = Y + 3 · T m Y − T m · T m (11) Эллиптическую кривую (1) это отображение также преобразует саму в себя, при этом точка (0 , T m ) взаимно-однозначно отображается на бесконечно- удаленную точку эллиптической кривой (1). Подставив в уравнение (1) вместо x и y выражения (11), мы получим то же самое уравнение (1) относительно новых переменных X и Y . Остальные семь точек теоремы 1 этим отображением переводятся друг в друга: (0 , − T m ) ↔ (0 , − T m ) - неподвижная точка. ( m + 1 , T m +1 ) ↔ (2 · T m , (2 n + 1) · T m ) 28 ( − m, T m − m ) ↔ (2 · T m , − (2 n + 1) · T m ) ( m + 1 , − T m +1 ) ↔ ( − m, − T m + m ) И, что самое интересное, целочисленные точки, дающие решение задачи о сумме кубов, преобразуются фактически в точки, использованные при суммировании с точкой (0 , T m ) (с точностью до знака координаты y ). То есть, на приведенной выше схеме, точка C взаимно-однозначно отоб- разится в точку симметричную точке D относительно оси абсцисс. Так, в рассматриваемых выше примерах для m = 212 , имеем: (1581 , 66795) ↔ (466612 / 289 , 337488418 / 4913) (2856 , 154290) ↔ (119139 / 196 , 104434539 / 2744) Таким образом, преобразование (10) в какой-то мере может заменить суммирование точек при поиске целочисленных решений уравнения (1). Ссылки [1] Георгий Гуляев. Суммы кубов последовательных натуральных чисел. 2023 http://soft.altailand.ru/pdf/%D0%A1%D1%83%D0%BC%D0%BC%D1%8B-% D0%BA%D1%83%D0%B1%D0%BE%D0%B2-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0% B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-% D0%BD%D0%B0%D1%82%D1%83%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-% D1%87%D0%B8%D1%81%D0%B5%D0%BB.pdf [2] 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 [3] Dale Husem¨ oller. Elliptic Curves. Second Edition. 2004 https://people. math.rochester.edu/faculty/doug/otherpapers/Husemoller.pdf [4] Joseph H. Silverman. The Arithmetic of Elliptic Curves. Second Edition. 2009 http://www.pdmi.ras.ru/~lowdimma/BSD/Silverman-Arithmetic_of_ EC.pdf [5] G. Everest, T. Ward. The repulsion motif in diophante equations. 2010 https://arxiv.org/pdf/1005.0315.pdf [6] Прасолов В.В, Соловьев Ю.П. Эллиптические функции и алгебраи- ческие уравнения. 1997. 29 [7] https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%BB%D0%B8%D0%BF% D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BA%D1%80%D0% B8%D0%B2%D0%B0%D1%8F 30
Математика
Русский
02.07.2026 AX-134228
Целочисленные точки на эллиптической кривой вида y^2 = x^3 + T_m^2
Аннотация
Исследуется целые и рациональные решения уравнения эллиптической кривой, тесно связанной с представлением суммы кубов последовательных натуральных чисел в виде куба. Доказано несколько теорем и приведены компьютерные программы для нахождения решений. Результаты применяются к задаче о сумме кубов.
Abstract
Integer and rational solutions of the equation of an specific elliptic curve are investigated. It closely related to the representation the sum of cubes of consecutive natural numbers as cube. Several theorems are proved, and computer programs for finding solutions are presented. The results are applied to the sum-of-cubes problem.
Ниже — текст, извлечённый из PDF для поиска и ИИ. Формулы, таблицы и точное форматирование смотрите в PDF-файле выше.
Ключевые слова
Кратко о работе
О чём работа?
Исследуется целые и рациональные решения уравнения эллиптической кривой, тесно связанной с представлением суммы кубов последовательных натуральных чисел в виде куба. Доказано несколько теорем и приведены компьютерные программы для нахождения решений. Результаты применяются к задаче о сумме кубов.
Ключевые темы?
эллиптическая кривая, решения уравнения, точки, сумма кубов.