Целочисленные точки эллиптической кривой вида $$y^2 = x^3 + \left(\frac{m(m+1)}{2}\right)^2$$

Георгий Гуляев

13 апреля 2023 г.

1. Введение

В работе [1] изучалась возможность представления суммы кубов последовательных натуральных чисел в виде куба некоторого натурального числа. Для суммы кубов Sm,n последовательных натуральных чисел от m+1 по n

$$S_{m,n} = \sum_{x=m+1}^{n} x^3$$

была выведена основная формула ([1] формула (1))

$$S_{m,n} = T_n^2 - T_m^2,$$

где Tm = m(m+1) 2 обозначает так называемое треугольное число - [2].

Предположим, что m ∈ N - фиксировано и требуется найти такие n ∈ N чтобы сумма Sm,n была кубом. Обозначив неизвестные Tn = y и Sm,n = x 3 , приходим к уравнению эллиптической кривой

$$y^2 = x^3 + T_m^2 (1)$$

В данной статье мы будем исследовать это уравнение при помощи компьютера и получим ряд результатов о его рациональных и целочисленных решениях. Общие сведения о понятии эллиптическая кривая можно найти в [7].

2. Уравнение (1) и его целочисленные решения

В общем виде уравнение

$$y^2 = x^3 + a, a \in \mathbb{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,\pm 5)$ ([4] - IX.7 - Proposition 7.1.). А также уравнение $y^2=x^3+1$ не имеет рациональных решений, отличных от $(-1,0),(0,\pm 1),(2,\pm 3),$ а уравнение $y^2=x^3-432$ не имеет рациональных решений, отличных от $(12,\pm 36)$ ([6] - глава 5, параграф 3, задачи к примеру 5).

Специфика нашего уравнения (1) заключается в том, что для любого натурального m оно всегда имеет определенное множество целочисленных решений $(x,y), x,y \in \mathbb{Z}$ .

Теорема 1. Для любого $m \in \mathbb{N}$ уравнение (1) имеет решения (x, y):

$$(0, \pm T_m), (m+1, \pm T_{m+1}), (2 \cdot T_m, \pm (2m+1) \cdot T_m), (-m, \pm (T_m - m))$$

Доказательство. Каждый из четырех случаев доказывается подстановкой x, y в уравнение (1). Первый случай очевиден, второй:

$$T_{m+1}^2 = (m+1)^3 + T_m^2 \Longrightarrow \frac{(m+1)^2(m+2)^2}{4} = (m+1)^3 + \frac{m^2(m+1)^2}{4}$$

$\Longrightarrow (m+2)^2 = 4(m+1) + m^2 \Longrightarrow (m+2)^2 = (m+2)^2.$

Третий: $$(2m+1)^2 \cdot T_m^2 = 8 \cdot T_m^3 + T_m^2 \Longrightarrow (2m+1)^2 = 8 \cdot T_m + 1$$

$\Longrightarrow (2m+1)^2 = 4m(m+1) + 1 \Longrightarrow (2m+1)^2 = (2m+1)^2.$

Четвертый: $$(T_m - m)^2 = -m^3 + T_m^2 \Longrightarrow T_m^2 - 2m \cdot T_m + m^2 = -m^3 + T_m^2$$

$$\Longrightarrow -m \cdot m(m+1) + m^2 = -m^3 \Longrightarrow -m^3 = -m^3.$$

Теорема доказана.

Из уравнения (1) очевидно, что, если (x, y) его решение, то и (x, −y) также будет его решением, то есть график эллиптической кривой симметричен относительно оси абсцисс.

Поэтому имеет смысл рассматривать только те точки (x, y), где y ≥ 0 остальные будут им симметричны относительно оси OX.

$$(0,T_m),(m+1,T_{m+1}),(2\cdot T_m,(2m+1)\cdot 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)

`` 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) ``

`` (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 + \dots + 54655^3 = 1306620^3$$ .

Для случая m=4879 обнаружено много решений, а вот уже для следующего m=4880 никаких новых точек, дополняющих точки из теоремы 1, обнаружить не удалось. Таким образом, встает вопрос, как искать эти дополнительные точки, когда они есть?

Пусть $m \in \mathbb{N}$ и $(x,y), x,y \in \mathbb{Z}$ некоторое решение уравнения (1), обозначим через d наибольший общий делитель чисел x,y и $T_m$ .

$$d = (x, y, T_m)$$

Существуют числа $p \in \mathbb{N}$ и $k_1, k_2 \in \mathbb{Z}$ такие, что

$$T_m = p \cdot d, x = k_1 \cdot d, y = k_2 \cdot d$$

Подставляя (x,y) и $T_m$ в уравнение (1) и сокращая его на $d^2$ , получаем:

$$k_2^2 = k_1^3 \cdot d + p^2 \tag{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 = \frac{T_m}{d} = \frac{11904760}{145180} = 82,$$

$$k_1 = \frac{x}{d} = \frac{1306620}{145180} = 9, k_2 = \frac{y}{d} = \frac{1493611840}{145180} = 10288$$

Предположим теперь, что эта точка (x, y) нам неизвестна и мы пытаемся ее найти, используя уравнение (2). Действуем по алгоритму:

  • 1. По заданному m вычисляем число $T_m$ .
  • 2. Перебираем все делители $T_m$ , представляя его в виде $T_m = p \cdot d$ .
  • 3. Подбираем $k_1$ так, чтобы правая часть уравнения (2) была квадратом.
  • 4. Находим из уравнения $k_2$ и вычисляем $(x,y) = (k1 \cdot d, k2 \cdot d)$ .

Разумеется, при d=1 этот алгоритм не упрощает вычисления (уравнения (1) и (2) совпадают). Однако на практике такие точки встречаются довольно редко (например, для всех $m \in [2,100]$ встретилось только 17 точек с d=1 из 684).

Кроме того, в дальнейшем мы не будем полагаться только на этот алгоритм, а добавим к нему и другие способы получения точек.

`` 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 = dc' 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)^3d+p^2 k2 = sqt(kk2) if k2^2==kk2 xy = (k1d,k2*d) if !(xy in l) push!(l,xy) end end end end sort!(l) end ``

Функция f ind(m, k) написанная на языке Julia реализует данный алгоритм. В качестве аргументов мы вводим числа m и k - верхнее ограничение для k1 и в результате получаем список целочисленных решений (x, y) уравнения (1).

Список будет содержать только те точки эллиптической кривой (1), для которых y ≥ 0, так как остальные получаются симметрией относительно оси абсцисс. Рассмотрим некоторые примеры.

`` 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, наша функция упустила.

Связяно это исключительно с верхней границей для k1. Мы перебирали целые k1 до 10000000, а для данной точки этого оказалось недостаточно. Действительно,

gcd(151702157576, 59086414439327976, 11904760) = 8296,

$$k_1 = \frac{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), 2P(x_1, y_1) = S(x_4, y_4)$$

$$x_3 = \left(\frac{y_2 - y_1}{x_2 - x_1}\right)^2 - x_1 - x_2, y_3 = \frac{y_2 - y_1}{x_2 - x_1}(x_1 - x_3) - y_1$$

$$x_4 = \left(\frac{3x_1^2 + a}{2y_1}\right)^2 - 2x_1, y_4 = \frac{y_2 - y_1}{x_2 - x_1}(x_1 - x_4) - y_1$$

Заметим, что в нашем случае $a=0, b=T_m^2$ и реализуем эти формулы на языке Julia:

`` function sm(p1,p2) x1 = p1[1]; y1 = p1[2] if p1==p2 k = (3x1^2)//(2y1) x3 = k^2 - 2x1 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 ``

Понятно, что, вообще говоря, при сложении целочисленных точек мы будем получать точки с рациональными координатами. Здесь расчет на то, что какие-то из них после сокращения дробей превратятся в целые и добавятся к первоначальному списку.

Вносим необходимые изменения в программу find:

`` 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 = (3x1^2)//(2y1) x3 = k^2 - 2x1 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 ``

`` 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 = dc' 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)^3d+p^2 k2 = sqt(kk2) if k2^2==kk2 xy = (k1d,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 ``

`` 1 = filter(x -> denominator(x[2])==1&&numerator(x[2])>0, 1) sort!(1)\nend ``

После получения первоначального списка целочисленных точек, мы постоянно складываем попарно все точки друг с другом и добавляем каждый результат сложения в список, убирая возможные повторы.

При этом, используем следующие ограничения: не добавляем точки для которых знаменатели координат $>10^{20}$ и заканчиваем процесс, если длина списка превзошла 1000 или же, если новых точек уже больше не появляется.

Ясно, что параметры этих ограничений можно менять в зависимости от величины m. Теперь мы не обязаны использовать слишком большое k и функция легко находит ранее потерянную точку:

`` julia find(4879,10000) 45-element Vector{Any}: (-51240, 2681560) (-49776, 4289032) ... (355120040, 6692105384040) (151702157576, 59086414439327976) ``

При помощи измененной программы find можно провести некоторые наблюдения.

Ниже приводится распределение количества точек с целочисленными координатами для $m \in [2,1500]$ (п - число точек, cnt - сколько раз такое число встретилось). 4 точки - это точки теоремы 1, то есть это означает, что новых точек найдено и добавлено не было.

`` n - cnt -----4 - 822 5 - 116 6 - 105 7 - 143 ``

`` 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 ``

``` 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 = 23717, t(714) = 357111317

m = 4784 = 2^4 1323, t(4784) = 2^3 3511132329

m = 4879 = 71741, t(4879) = 2^3 571741*61

m = 7314 = 232353, t(7314) = 357111923*53

m = 10625 = 5^4 17, t(10625) = 3 5^4 7111723

m = 21504 = 2^{10} 37, t(21504) = 2^9 357111723

m = 25839 = 3^4 1129, t(25839) = 2^3 3^4 511171929

m = 45695 = 5131937, t(45695) = 2^6 35713171937 ```

Можно заметить, что во всех этих случаях разложение $T_m$ имеет много небольших простых чисел. Если ограничиться числами m для, которых $T_m$ в разложении имеет не менее 6 различных простых числа, которые не превосходят, например, 100, то мы получим не только все эти случаи,

но и, вероятно, некоторые интересные другие (если рассматривать 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_n^2>x^3+T_m^2$ для всех $x\in\mathbb{R}$ . Отметим, что для каждого фиксированного m область определения (1) в $\mathbb{R}$ : $x\geq -\sqrt[3]{T_m^2}$ .

Прямая $\mathbf{x}=0$ пересекает кривые (1) в точках $(0,\pm T_m)$ . Это первый случай целочисленных решений из теоремы 1.

Заметим, что точки второго и четвертого случая решений теоремы 1 (при y>0): $(m+1,T_{m+1}),(-m,T_m-m)$ лежат на пересечении семейства эллиптических кривых (1) с параболой $y=\frac{x(x+1)}{2}$ .

Ну и последний третий случай решений $(2T_m,(2m+1)T_m$ дает нам кривую $y=\frac{x\sqrt{4x+1}}{2},$ на пересечении с которой и лежат точки этих решений.

3. Рациональные точки семейства кривых (1)

Согласно теореме Морделла ([6] - глава 5, параграф 3, задача 2) уравнение (1) имеет бесконечное множество рациональных решений, если $T_m^2$ свободно от 6-х степеней и не равно 1 или -432.

Таким образом, достаточно потребовать m>1 и, чтобы $T_m$ - содержало в разложении на простые множители степени не выше второй, для того, чтобы кривая (1) содержала бесконечное множество точек с рациональными координатами.

Не теряя общности, будем искать рациональные решения уравнения (1) в виде

$$\left(\frac{a}{q^2}, \frac{b}{q^3}\right), a \in \mathbb{Z}, b \in \mathbb{Z}, q \in \mathbb{N}$$ (3)

Обозначим через d наибольший общий делитель чисел a,b и $T_m$ .

$$d = (a, b, T_m)$$

Тогда существуют числа $p \in \mathbb{N}$ и $k_1, k_2 \in \mathbb{Z}$ такие, что

$$T_m = p \cdot d, a = k_1 \cdot d, b = k_2 \cdot d \tag{4}$$

Подставляя (3) в уравнение (1) с учетом (4) и сокращая его на $d^2$ , приходим к уравнению:

$$k_2^2 = k_1^3 \cdot d + (p * q^3)^2 \tag{5}$$

Уравнение (5) является обобщением уравнения (2), в которое оно превращается при q=1. Алгоритм поиска рациональных точек на эллиптической кривой (1) подобен алгоритму для целочисленных точек:

  • 1. По заданному m вычисляем число $T_m$ .
  • 2. Перебираем все делители $T_m$ , представляя его в виде $T_m = p \cdot d$ .
  • 3. Подбираем $k_1$ и q так, чтобы правая часть уравнения (5) была квадратом.
  • 4. Находим из уравнения $k_2$ и вычисляем $(x,y)=(\frac{k1\cdot d}{q^2},\frac{k2\cdot d}{q^3}).$

Программа, реализующая данный алгоритм, аналогичная первой версии find(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 \text{ for } i \text{ in } 0:k] d = dc d = reshape(d, length(d)) end sort!(d) 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 = (2m+1)tm; tm3 = tm-m 1 = Vector{Tuple{Rational{Int128},Rational{Int128}}}() push!(1,(Int128(0),tm),(Int128(0),-tm),(Int128(m+1),tm1),(Int128(m+1), ``

`` -tm1),(2tm,tm2),(2tm,-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("\e[1G") for q in 1:r q2 = Int128(q)^2; q3 = q2q for k1 in -s:s kk2 = Int128(k1)^3d+(pq3)^2 if kk2 >= 0 k2 = sqt(kk2) if k2^2==kk2 xy = (k1d//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 ``

Примеры ее использования:

`` 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) ``

`` 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) ``

`` (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) может быть представлена в виде:

$$\left(\frac{a \cdot T_m}{q^2}, \frac{b \cdot T_m}{q^3}\right),$$ (6)

где $q \in \mathbb{N}, a, b \in \mathbb{Z}$ .

Доказательство. Пусть $(\frac{r}{s},\frac{u}{v})$ - произвольное решение уравнения (1). Умножая числители и знаменатели дробей на одинаковые множители, их легко можно привести к виду

$$\left(\frac{a \cdot T_m}{w^2}, \frac{b \cdot T_m}{z^3}\right) \tag{7}$$

Покажем на примере первой дроби. Сначала (если r не ноль) домножим числитель дроби $\frac{r}{s}$ до наименьшего общего кратного $[r,T_m]$ , то есть умножим на $k_1=\frac{[r,T_m]}{r}$ ,

$$\frac{r}{s} = \frac{r \cdot k_1}{s \cdot k_1} = \frac{a_1 \cdot T_m}{s \cdot k_1}.$$

Затем, домножим знаменатель полученной дроби до квадрата натурального числа. Если, например, $s \cdot k_1 = d^2 \cdot t$ , то умножим числитель и знаменатель на t и дробь примет вид из формулы (7).

Аналогично приводим вторую дробь к виду из формулы (7). Далее, если w не равно z, то находим q = [w, z] и домножаем первую дробь до $q^2$ , а вторую до $q^3$ в знаменателе.

Лемма доказана.

Подставляя координаты точки (6) в уравнение (1) и сокращая на $T_m^2$ , приводим его к виду:

$$b^2 = a^3 \cdot T_m + q^6 \tag{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 = (3x1^2)//(2y1) x3 = k^2 - 2x1 else x2 = p2[1]; y2 = p2[2] k = (y2-y1)//(x2-x1) x3 = k^2 - x1 - x2 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 = (2m+1)tm; tm3 = tm-m 1 = Vector{Tuple{Rational{Int128}}, Rational{Int128}}}(); cbm = cbt(tm) push!(1,(Int128(0),tm),(Int128(0),-tm),(Int128(m+1),tm1),(Int128(m+1),-tm1), (2tm,tm2),(2*tm,-tm2),(-m,tm3),(-m,-tm3)) ``

`` for q in 1:r print("\e[2K"); print(string("q = ",q)); print("\e[1G") q2 = Int128(q)^2; q3 = q2q for a in -div(q2,cbm):s x = (atm)//(q2) if length(filter(z -> z[1]==x,l))==0 b2 = Int128(a)^3tm+q3^2 if b2>=0 b = sqt(b2) if b^2==b2 y = (btm)//(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 превосходят 1020, эта программа находит следующее количество точек:

`` 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 = Tn, то есть, когда 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)) ``

`` ((4879, 54655), (1306620, 1493611840)) ((4965, 7709), (90090, 29718195)) ((8789, 12885), (175440, 83018055)) ... ``

Например, в первой строке m = 2 и y = 15 оказалось равным T5, поэтому эта точка дала решение (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, Tm = 22578, Tm+1 = 22791, 2 · Tm = 45156,(2m + 1) · Tm = 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, две точки, приводящие к решению задачи о сумме кубов.

`` (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, нашлась рациональная точка, дающая в сумме нужную нам точку. Две из них оказались даже целочисленными.

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

Рассмотрим процесс поиска точек на схематичном графике. Пусть $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 уже может быть любого знака. Приведенные выше примеры это подтверждают.

Для первой точки 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 \in \mathbb{N}$ , тогда координаты суммы точек

$$C(x,y) = A(0,T_m) + B\left(\frac{a \cdot T_m}{q^2}, -\frac{b \cdot T_m}{q^3}\right),$$

лежащих на кривой (1) могут быть вычислены по формуле:

$$x = \frac{2q(b+q^3)}{a^2}, y = \frac{(b+q^3)(b+3q^3)}{a^3}$$ (9)

Доказательство. По формуле сложения точек эллиптической кривой:

$$x = k^2 - x_1 - x_2, y = k \cdot (x_1 - x_3) - y_1, k = \frac{y_2 - y_1}{x_2 - x_1}$$

В нашем случае,

$$y_2 - y_1 = -\frac{b \cdot T_m}{q^3} - T_m = -\frac{T_m \cdot (b + q^3)}{q^3}, x_2 - x_1 = \frac{a \cdot T_m}{q^2}$$

$$k = \frac{y_2 - y_1}{x_2 - x_1} = -\frac{b + q^3}{q \cdot a}, x = \frac{(b + q^3)^2}{q^2 \cdot a^2} - \frac{a \cdot T_m}{q^2} = \frac{(b + q^3)^2 - a^3 \cdot T_m}{q^2 \cdot a^2}$$

Используем теперь тот факт, что точка B находится на эллиптической кривой (1), то есть ее координаты удовлетворяют уравнению этой кривой и, как следствие этого, имеет место формула (8), согласно которой

$$a^3 \cdot T_m = b^2 - q^6 = (b + q^3)(b - q^3)$$

С учетом этого,

$$x = \frac{(b+q^3)^2 - (b+q^3)(b-q^3)}{q^2 \cdot a^2} = \frac{(b+q^3)(b+q^3-b+q^3)}{q^2 \cdot a^2} = \frac{2q(b+q^3)}{a^2}$$

Далее,

$$y = -\frac{b+q^3}{q \cdot a} \cdot \left(0 - \frac{2q(b+q^3)}{a^2}\right) - T_m = \frac{2(b+q^3)^2 - a^3 \cdot T_m}{a^3} = \frac{2(b+q^3)^2 - (b+q^3)(b-q^3)}{a^3} = \frac{(b+q^3)(b+2q^3-b+q^3)}{a^3} = \frac{(b+q^3)(b+3q^3)}{a^3}$$

Теорема доказана.

Хотя в формулах (9) отсутствует m, это не означает, что точка с координатами (9) будет находиться на кривой (1) для любого m. Слагаемые A и B задают эллиптическую кривую, на которой они лежат сами и на которой будет лежать их сумма. В точке A уже присутствует m, а для того чтобы B лежала на кривой (1), должно выполняться равенство (8).

Таким образом, формулы (9) будут давать координаты точки на кривой (1) только в том случае, когда a, b, q связаны с m формулой (8).

Рассмотрим еще одно любопытное преобразование:

$$X = \frac{2x}{y - T_m} \cdot T_m, Y = \frac{y + 3 \cdot T_m}{y - T_m} \cdot T_m \tag{10}$$

Оно взаимно-однозначно отображает плоскость $\mathbb{R}^2$ с вырезанной прямой $y=T_m$ на саму себя, при этом обратное отображение в точности совпадает с прямым:

$$x = \frac{2X}{Y - T_m} \cdot T_m, y = \frac{Y + 3 \cdot T_m}{Y - T_m} \cdot T_m \tag{11}$$

Эллиптическую кривую (1) это отображение также преобразует саму в себя, при этом точка $(0, T_m)$ взаимно-однозначно отображается на бесконечно-удаленную точку эллиптической кривой (1).

Подставив в уравнение (1) вместо x и y выражения (11), мы получим то же самое уравнение (1) относительно новых переменных X и Y.

Остальные семь точек теоремы 1 этим отображением переводятся друг в друга:

$$(0,-T_m) \leftrightarrow (0,-T_m)$$ - неподвижная точка.

$$(m+1,T_{m+1}) \leftrightarrow (2 \cdot T_m,(2n+1) \cdot T_m)$$

$$(-m, T_m - m) \leftrightarrow (2 \cdot T_m, -(2n+1) \cdot T_m)$$ $$(m+1, -T_{m+1}) \leftrightarrow (-m, -T_m + m)$$

И, что самое интересное, целочисленные точки, дающие решение задачи о сумме кубов, преобразуются фактически в точки, использованные при суммировании с точкой (0, Tm) (с точностью до знака координаты y).

То есть, на приведенной выше схеме, точка C взаимно-однозначно отобразится в точку симметричную точке D относительно оси абсцисс. Так, в рассматриваемых выше примерах для m = 212, имеем:

$$(1581, 66795) \leftrightarrow (466612/289, 337488418/4913)$$

$$(2856, 154290) \leftrightarrow (119139/196, 104434539/2744)$$

Таким образом, преобразование (10) в какой-то мере может заменить суммирование точек при поиске целочисленных решений уравнения (1).

Ссылки

  • [1] Георгий Гуляев. Суммы кубов последовательных натуральных чисел. 2023 [http://soft.altailand.ru/pdf/%D0%A1%D1%83%D0%BC%D0%BC%D1%8B-](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)% [D0%BA%D1%83%D0%B1%D0%BE%D0%B2-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%](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) [B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%](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) [D0%BD%D0%B0%D1%82%D1%83%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%8](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)5-% [D1%87%D0%B8%D1%81%D0%B5%D0%BB.pdf](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%](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) [D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5\\_%D1%87%D0%B8%D1%81%D0%BB%D0%](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) [BE](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.](https://people.math.rochester.edu/faculty/doug/otherpapers/Husemoller.pdf) [math.rochester.edu/faculty/doug/otherpapers/Husemoller.pdf](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](http://www.pdmi.ras.ru/~lowdimma/BSD/Silverman-Arithmetic_of_EC.pdf)\_ [EC.pdf](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.

[7] [https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%BB%D0%B8%D0%BF%](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) [D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F\\_%D0%BA%D1%80%D0%](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) [B8%D0%B2%D0%B0%D1%8F](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)