交错椭圆
设$E_a$是$x^2+4y^2=4a^2$所表示的椭圆,$E_a'$是将$E_a$绕原点逆时针旋转某个$\theta$角所得的图形,其中$\theta$在0到90度之间。
设b是两椭圆交点中离原点较近的两个交点到原点的距离,c是另外两个较远的交点到原点的距离。
若a, b, c均为正整数,就称$(a,b,c)$为典范椭圆三元组,例如,$(209, 247, 286)$就是一典范椭圆三元组。
记$C(N)$为所有满足$a\le N$的典范椭圆三元组的总数。
可以验证$C(10^3)=7, C(10^4)=106, C(10^6)=11845$。
求$C(10^{17})$。
本题难度:
解答
先写出椭圆的坐标方程
$$r=\frac{2a}{\sqrt{4\cos^2\theta+\sin^2\theta}}.$$
注意到b和c对应的幅角相差90度,因此若$r=b$时的角度为$\theta_b$,那么有
$$b=\frac{2a}{\sqrt{4\cos^2\theta_b+\sin^2\theta_b}}, \quad c=\frac{2a}{\sqrt{4\sin^2\theta_b+\cos^2\theta_b}}.$$
两者联立即可得
$$\frac{2a}{b}+\frac{2a}{c}=5(\cos^2\theta_b+\sin^2\theta_b)=5,$$
亦即
$$\frac{b^2+c^2}{b^2c^2}=\frac{5}{4a^2}.$$
令$d=\gcd(b,c), x=b/d, y=c/d$代入就有
$$\frac{\frac{x^2+y^2}{d^2}}{x^2y^2}=\frac{5}{4a^2}.$$
两侧都是既约分数,从而
$$x^2+y^2=5d^2, \quad a=xy/2.$$
因此只需确定$x^2+y^2=5d^2$的整数解,再筛出其中满足$xy$为偶数的解即可。
此类二次曲线的整数解的解法已在例如第257题 中展示过了,它们都具有与勾股数的欧几里得公式类似的生成公式,此处不再赘述。
最终结果是$1199215615081353$。
注:因用到math.gcd函数,以下代码为Python 3,且代码中打印了进度信息。
import math
target=10**17
s=0
bound=35566
tick=356
for m in range(2,bound):
for n in range(m//2+1,m):
if math.gcd(n,m)==(m+n)%2==1:
x,y=2*m*n+2*m*m-2*n*n,4*m*n-m*m+n*n
if x%5==y%5==0:
x,y=x//5,y//5
s+=(2*target)//(x*y)
if m%tick==0:
print(m//tick,"percent completed")
print(s)