ikazuchi 发布于8 小时前 发布于8 小时前 给一个等号右边给任意值的通用解法吧: x/y + y/z + z/x = n Step 1: 换元u=x/z,v=y/z,得 u/v + v + 1/u = n Step 2: 换元X=-u, Y=uv,得 Y^2 + nXY + Y = X^3 即(a_1,a_2,a_3,a_4,a_6) = (n,0,1,0,0)的椭圆曲线 Step 3: 通过查表(例如LMFDB)或SageMath等计算工具得到椭圆曲线的rank,若rank=0,则很可能无解(用有限阶有理点推原方程的解很可能是错误的)。 若rank至少为1,则可以找到一个无穷阶的有理点,即可由此这个点推算原方程的整数解。 以下是求解的SageMath代码: 剧透 n = 92 E = EllipticCurve(QQ, [n, 0, 1, 0, 0]) E.two_descent(second_limit=15, verbose=True) rank = E.rank() print(f"EC rank = {rank}") if rank < 1: print("Solve Failed: No inf-order points") exit() generators = E.gens() P = generators[0] print(f"rational point P = {P}, order = {P.order()}") X, Y = P.xy() u = -X if u == 0: print("Solve Failed: invalid rational point (X=0)") exit() v = Y / u den_u = u.denominator() den_v = v.denominator() z = den_u * den_v x = u * z y = v * z g = gcd([x, y, z]) if g != 1 and g != 0: x //= g y //= g z //= g print(f"Integer solution:") print(f"x = {x}") print(f"y = {y}") print(f"z = {z}") if x == 0 or y == 0 or z == 0: print("Check Failed: Invalid solution (Zero value)") else: left = x*x*z + y*y*x + z*z*y right = n*x*y*z if left == right: print("Check Pass: the solution is correct") print(f"Left = {left}") print(f"Right = {right}") else: print("Check Failed: invalid solution (Not equal)") print(f"Left = {left}") print(f"Right = {right}") 然后是输出的结果: 剧透 Working with minimal curve [0,1,1,-1492439,701269845] via [u,r,s,t] = [1,-705,-46,32430] Basic pair: I=71637088, J=-1212653937584 disc=5382104832 2-adic index bound = 2 By Lemma 5.1(a), 2-adic index = 1 2-adic index = 1 One (I,J) pair Looking for quartics with I = 71637088, J = -1212653937584 Looking for Type 2 quartics: Trying positive a from 1 up to 2821 (square a first...) (1,0,-4232,4,4477272) --trivial Trying positive a from 1 up to 2821 (...then non-square a) (277,176,-4190,-1340,16057) --nontrivial...locally soluble...(x:y:z) = (-1891632 : 35661385544981 : 828271) Point = [31972627018996679641497576950100026575573575:-18401847671127799092651220843820496649836:45351811426345621650009333682925120228141] height = 61.92236706 Rank of B=im(eps) increases to 1 Finished looking for Type 2 quartics. Looking for Type 1 quartics: Trying positive a from 1 up to 2821 (square a first...) Trying positive a from 1 up to 2821 (...then non-square a) Finished looking for Type 1 quartics. Mordell rank contribution from B=im(eps) = 1 Selmer rank contribution from B=im(eps) = 1 Sha rank contribution from B=im(eps) = 0 Mordell rank contribution from A=ker(eps) = 0 Selmer rank contribution from A=ker(eps) = 0 Sha rank contribution from A=ker(eps) = 0 Searching for points (bound = 8)...done: found points which generate a subgroup of rank 0 and regulator 1 Processing points found during 2-descent...done: 2-descent increases rank to 1, now regulator = 61.92236706 Saturating (with bound = -1)...done: points were already saturated. EC rank = 1 rational point P = (-11217639776756321041004430/1271734418987779814374290361 : -165129881198178499588183393974421656/45351811426345621650009333682925120228141 : 1), order = +Infinity Integer solution: x = 229365321791393105114775911058660762150 y = -10733680363511342830998605670315357876 z = 26002954279983814794511196680447493149805 Check Pass: the solution is correct Left = -5889615387302719627439057247103422259423225512549510026550109437132523984698081635906203006624869363617153515750404000 Right = -5889615387302719627439057247103422259423225512549510026550109437132523984698081635906203006624869363617153515750404000 和楼上给出的应该是同一组结果,只是轮换对称并乘了个-1 注:我在以上求解过程中尝试使用了Gemini、Grok和豆包(给了一定的提示),但没有一个完全做对的,Gemini和豆包都给出了无解的伪证,Gemini思路对了,但注意力不集中,换元时没有注意到正确的变换,导致后面全错,找了个错误的曲线以为rank=0无解。豆包则是用初等数论给出了一个伪证,看起来似乎像模像样,但实际上错误很严重,推理到后面就不记得自己在前面假设的条件了。Grok则不知道为什么一直沉迷于写程序穷举,给它提示后也只是换一种思路再写代码再穷举,然后说在它尝试的范围内找不到解。我把Gemini的伪证给Grok看,但Grok找不出真正的错误点。把豆包的伪证给Gemini看,倒是很快就发现问题了。从数学推理能力来看,Gemini在这几个里应该算是遥遥领先了。
推荐贴