令$x=n^3+b, y= (n+a)^3+b$,用辗转相除法计算$ux+vy=w$可得$w=a^7+27ab^2=2^5\cdot 3^5\cdot 304357$,而$\gcd(x,y)$能整除$w$。
至此直接遍历$2^5\cdot 3^5\cdot 304357$的约数已经可以计算$n$,不过以下收录官网论坛中的另一种解法,速度较快:
选择合适的$u,v$可获得不同形式的$w$,例如$\gcd(x,y)$也能整除$y-x=3an^2+3a^2n+a^3$以及$(n+2a)x-(n-a)y=2a^3n+3ab+a^4$。
选择其中尽可能简单的值并再作一次辗转相除法即可更快确定$\gcd(x,y)$以及符合要求的$n$,最终结果是$1791954757162$。
注:以下代码改编自官网论坛,因使用math.gcd函数,代码为Python 3。
import math
def f(a,b,c):
q,r=divmod(a,b)
if r==0:
return 0,c//b
else:
u,v=f(b,r,c)
return v,u-q*v
res=0
for a in range(1,19):
for b in range(1,1901):
n,g=0,1
p=a**6+27*b*b
q=8*a**5
r=4*a**6+12*b*a*a*a
d=math.gcd(p,q)
p,q,r=p//d,q//d,r//d
_,m=f(p,-q,r)
k=m//p
for i in range(a):
t=m-k*p
if (x:=math.gcd((t+a)**3+b,t**3+b))>g:
g=x
n=t
k-=1
res+=n
print(res)
|