Nov 14, 2022 502 words 3 min
数学:分式钓鱼题 Summary 求正整数 a、b、c 使 a 除以 b+c 加 b 除以 a+c 加 c 除以 a+b 等于 4。看似初等,化简后得到一个三元三次齐次方程,归一化为一条亏格 1 的三次曲线,进而双有理等价为椭圆曲线。由曲线上的有理点可反推 a 比 b 比 c,但需沿无穷阶生成元反复做倍点运算,才能落入三者同时为正的区域,最终最小的正整数解长达八十余位。
一道看似初等、实则需要椭圆曲线才能求解的分式钓鱼题。
求正整数 a , b , c a,b,c a , b , c ,使得:
a b + c + b a + c + c a + b = 4 \frac{a}{b+c}+\frac{b}{a+c}+\frac{c}{a+b}=4 b + c a + a + c b + a + b c = 4
设 s = a + b + c s=a+b+c s = a + b + c ,p = a b + b c + c a p=ab+bc+ca p = ab + b c + c a ,q = a b c q=abc q = ab c 。
由 a + b = s − c a+b=s-c a + b = s − c ,a + c = s − b a+c=s-b a + c = s − b ,b + c = s − a b+c=s-a b + c = s − a ,得公共分母:
( a + b ) ( b + c ) ( c + a ) = ( s − a ) ( s − b ) ( s − c ) = s p − q (a+b)(b+c)(c+a)=(s-a)(s-b)(s-c)=sp-q ( a + b ) ( b + c ) ( c + a ) = ( s − a ) ( s − b ) ( s − c ) = s p − q
原式两边同乘公共分母:
a ( s − b ) ( s − c ) + b ( s − a ) ( s − c ) + c ( s − a ) ( s − b ) = 4 ( s p − q ) a(s-b)(s-c)+b(s-a)(s-c)+c(s-a)(s-b)=4(sp-q) a ( s − b ) ( s − c ) + b ( s − a ) ( s − c ) + c ( s − a ) ( s − b ) = 4 ( s p − q )
展开左边,利用 ∑ a = s \sum a=s ∑ a = s ,∑ a ( b + c ) = 2 p \sum a(b+c)=2p ∑ a ( b + c ) = 2 p ,∑ cyc a b c = 3 q \sum_{\text{cyc}}abc=3q ∑ cyc ab c = 3 q :
∑ cyc a ( s − b ) ( s − c ) = s 3 − 2 s p + 3 q \sum_{\text{cyc}}a(s-b)(s-c)=s^3-2sp+3q cyc ∑ a ( s − b ) ( s − c ) = s 3 − 2 s p + 3 q
代入并整理:
( a + b + c ) 3 − 6 ( a + b + c ) ( a b + b c + c a ) + 7 a b c = 0 (a+b+c)^3-6(a+b+c)(ab+bc+ca)+7abc=0 ( a + b + c ) 3 − 6 ( a + b + c ) ( ab + b c + c a ) + 7 ab c = 0
这是一个三元三次齐次方程。
原方程齐次,若 ( a , b , c ) (a,b,c) ( a , b , c ) 是解,则任意正实数 k k k 倍 ( k a , k b , k c ) (ka,kb,kc) ( k a , k b , k c ) 也是解。
因此只需先求正有理比例 ( a : b : c ) (a:b:c) ( a : b : c ) ,再通分放大为正整数。
令 A = a s A=\frac{a}{s} A = s a ,B = b s B=\frac{b}{s} B = s b ,C = c s C=\frac{c}{s} C = s c ,则 A + B + C = 1 A+B+C=1 A + B + C = 1 ,原方程化为:
A 1 − A + B 1 − B + C 1 − C = 4 \frac{A}{1-A}+\frac{B}{1-B}+\frac{C}{1-C}=4 1 − A A + 1 − B B + 1 − C C = 4
这是一条亏格 1 1 1 的三次曲线,只要存在一个有理点,就可以双有理等价为一条椭圆曲线。
Bremner 与 Macleod 在《An unusual cubic representation problem》中给出了更一般方程:
a b + c + b c + a + c a + b = N \frac{a}{b+c}+\frac{b}{c+a}+\frac{c}{a+b}=N b + c a + c + a b + a + b c = N
对应的椭圆曲线模型:
E N : y 2 = x 3 + ( 4 N 2 + 12 N − 3 ) x 2 + 32 ( N + 3 ) x E_N:y^2=x^3+(4N^2+12N-3)x^2+32(N+3)x E N : y 2 = x 3 + ( 4 N 2 + 12 N − 3 ) x 2 + 32 ( N + 3 ) x
代入 N = 4 N=4 N = 4 :
E 4 : y 2 = x 3 + 109 x 2 + 224 x E_4:y^2=x^3+109x^2+224x E 4 : y 2 = x 3 + 109 x 2 + 224 x
由 E 4 E_4 E 4 上的有理点 ( x , y ) (x,y) ( x , y ) 可反推 ( a : b : c ) (a:b:c) ( a : b : c ) :
a s = 56 − x + y 14 ( 4 − x ) , b s = 56 − x − y 14 ( 4 − x ) , c s = − 28 − 6 x 7 ( 4 − x ) \frac{a}{s}=\frac{56-x+y}{14(4-x)},\frac{b}{s}=\frac{56-x-y}{14(4-x)},\frac{c}{s}=\frac{-28-6x}{7(4-x)} s a = 14 ( 4 − x ) 56 − x + y , s b = 14 ( 4 − x ) 56 − x − y , s c = 7 ( 4 − x ) − 28 − 6 x
只需找到让三个值同时为正有理数的 ( x , y ) (x,y) ( x , y ) 。
最小正解对应的有理点必须沿着 E 4 ( Q ) E_4(\mathbb{Q}) E 4 ( Q ) 的无穷阶生成元做多次倍点运算才能落入正区域,每次倍点的位数大致翻倍。
通分放大后,得到一组最小正整数解:
a = 154476802108746166441951315019919837485664325669565431700026634898253202035277999 b = 4373612677928697257861252602371390152816537558161613618621437993378423467772036 c = 36875131794129999827197811565225474825492979968971970996283137471637224634055579 \begin{aligned}
a & =154476802108746166441951315019919837485664325669565431700026634898253202035277999 \\
b & =4373612677928697257861252602371390152816537558161613618621437993378423467772036 \\
c & =36875131794129999827197811565225474825492979968971970996283137471637224634055579
\end{aligned} a b c = 154476802108746166441951315019919837485664325669565431700026634898253202035277999 = 4373612677928697257861252602371390152816537558161613618621437993378423467772036 = 36875131794129999827197811565225474825492979968971970996283137471637224634055579
代入化简得到的等价条件:
( a + b + c ) 3 − 6 ( a + b + c ) ( a b + b c + c a ) + 7 a b c = 0 (a+b+c)^3-6(a+b+c)(ab+bc+ca)+7abc=0 ( a + b + c ) 3 − 6 ( a + b + c ) ( ab + b c + c a ) + 7 ab c = 0
a = 154476802108746166441951315019919837485664325669565431700026634898253202035277999
b = 4373612677928697257861252602371390152816537558161613618621437993378423467772036
c = 36875131794129999827197811565225474825492979968971970996283137471637224634055579
assert ( a + b + c ) ** 3 - 6 * ( a + b + c ) * ( a * b + b * c + c * a ) + 7 * a * b * c == 0