project euler 233 (直角三角形)

题目

https://projecteuler.net/problem=233

题意

$f(N) = $ 和 $(0,0)(0,N),(N,0),(N,N)$ 共圆的整点的个数

例如 $f(10000) = 36$

求 $1 \leq i \leq 10^{11}$ 使得$f(i)=420$ 的所有$i$的和

题解

我目前想到的

对称性

首先 圆上的点 (x,y) 满足

$(x-\frac{N}{2})^2+(y-\frac{N}{2})^2 = \frac{N^2}{2}$

根据对称性

我们只用考虑 $\frac{N}{2} < x < y $ 的个数,然后乘8 加4(对角线的点)

$420 = 52 \cdot 8 +4$

所以这里我们其实 需要求满足上述两个条件的整点 方案为52的即可

奇偶

若 N 为奇数

$(2x-N)^2+(2y-N)^2 = 2N^2$, 要解的方程是$a^2+b^2=2c^2, (0 < a < c < b )$且$a,b,c$均为奇数的形式

若 N 为偶数,令 $N=2k$

$(x-k)^2+(y-k)^2 = 2k^2$, 要解的方程是$a^2+b^2=2c^2$ 的形式

考虑 到$\bmod 4$ 的情况

$ 0^2 = 0 \bmod 4 $

$ 1^2 = 1 \bmod 4 $

$ 2^2 = 0 \bmod 4 $

$ 3^2 = 1 \bmod 4 $

所以 $(a,b,c)$ 同奇偶

因此如果k仍然是偶数,则继续除以2,反复迭代直到c为奇数

最终我们只用考虑 奇数的形式

也得到结论如果N是偶数,那么$f(N) = f(\frac{N}{2})$

公约数

若 $gcd(a,b) = k > 1$,那么显然 $gcd(a,c) = k$

所以$(a,b,c)$同时除以$k$依然成立

同理$(a,c),(b,c)$ 只用考虑 $(a,b,c)$ 两两互质,非互质的是通过互质的倍数得到的

令 $g(c) = $ 使得 $a^2+b^2=2c^2 ,(0 < a < c < b),(a,b,c)$ 两两互质 且 全为奇数(废话,可以不加这条因为是等式的结论) 的方案数

$c$是奇数时 $ f(c) = \sum_{c = 0 \bmod i}g(i)$

变形 与 直角三角形

$a^2+b^2=2c^2, (0 < a < c < b )$且$a,b,c$均为奇数的形式

思路1

$b^2 - 2c^2 = -a^2$ 然后 佩尔方程类似的去解

如果能得到不同a的初始解,剩余的解很容易得到,但是初始解还是只能枚举

思路2

令$d = \frac{a+b}{2}$,$e = \frac{b-a}{2}$

则$d,e$为整数且奇偶互异,

带入 $(d-e)^2+(d+e)^2=2c^2$

即$d^2+e^2=c^2$

这和 直角三角形的基础解是一一对应的,(直角三角形基础解的讲解 见 PE075 的题解)

所以 $k(a,b,c)$ 与 $k(d,e,c)$ 一一对应

所以 问题变成了

c 为直角三角形边 恰好 52 种的方案数

计算方案数 与 方案数性质

根据 直角三角形基础解的性质

若 满足$c = k (m^2+n^2), (m>n>0) , (m+n)=1 \bmod 2$

则 c 是一个直角三角形的斜边

问题是 数量级在$10^{11}$ 虽然 m 和n 都不到$10^6$了,但是基于时间和空间 依然 无法暴力

费马平方和定理

奇质数能表示为两个平方数之和的充分必要条件是该质数被4除余1

https://yexiaorain.github.io/Math/Fermat_s_two_square_theorem/

回到题目

我们之前的结论是:

若 满足$c = k (m^2+n^2), (m > n > 0) , (m+n)=1 \bmod 2$

则 $c$ 是一个直角三角形的斜边, 求有52个解的所有的$c$的和

现在有的理论基础是:

若$a,b$ 互质,则$a^2+b^2$所有质因子都是$4n+1$的形式, 且这些质因子自身唯一分解

反过来$4n+1$的质数的乘积 能表示成 $a^2+b^2$,但是可能$a,b$不互质, 例如$5^4 = 5^2(5^2) = 5^2(3^2+4^2)=15^2+20^2$

所以上面的一个数$c$质因数分解,则 模4余3的质因子和2全在k中,模4余1的因子可以在k中也可以不在k中

$k(m^2+n^2) = c = 2^{c_1} p_1^{a_1} \cdots p_r ^{a_r} q_1^{b_1} \cdots q_s ^{b_s}$

$k$是$2^{c_1}q_1^{b_1} \cdots q_s ^{b_s}$ 的倍数

$p_1^{a_1} \cdots p_r ^{a_r}$是$(m^2+n^2)$ 的倍数

表示方法来源的唯一性, 一个仅由4n+1素数乘积构成的数的平方数分解,全部恰好由其任意一个素数的表示法与剩余部分的表示法生成

我们下面只关心$X = m^2+n^2 = p_1^{d_1} \cdots p_r ^{d_r}$的部分, 这里幂次用d区别了上面的a,表示确定选择的部分,仅仅是上面a的部分约数即可

任意拆一个质因子

$X = (p_1^{d_1} \cdots p_i^{d_i-1}\cdots p_r ^{d_r})\cdot p_i$

已知对于左侧任意一个表示法$a^2+b^2$, 和 右侧的一个唯一的表示法$c^2+d^2$

由费马平方和定理第一条, 可以对$X = (a^2 + b^2)(c^2 + d^2) = (ac+bd)^2+(ad-bc)^2 = (ac-bd)^2+(ad+bc)^2$

也就是 对于给定$(a,b), p $ 能产生考虑正负的16个点,这8个点一组,每组内的点按坐标轴和对角线对撑

$((a,b), p) => (\pm(ac+bd),\pm(ad-bc)) or (\pm(ac-bd),\pm(ad+bc))$ 或交换横纵坐标


反过来,考虑$X = e^2+f^2 = $ 的一个任意的表示法

$X = e^2+f^2 = (p_1^{d_1} \cdots p_i^{d_i-1}\cdots p_r ^{d_r})\cdot (c^2+d^2)$

由上面费马平方和定理第二条

$(p_1^{d_1} \cdots p_i^{d_i-1}\cdots p_r ^{d_r}) = (\frac{ec+fd}{p})^2+(\frac{ed-fc}{p})^2$ 能表示成整数的平方和 或 $= (\frac{ec-fd}{p})^2+(\frac{ed+fc}{p})^2$能表示成平方和的倍数

所以,至少有一个拆解

如果是第一个

$((\frac{ec+fd}{p})^2+(\frac{ed-fc}{p})^2)(c^2+d^2) = (c\frac{ec+fd}{p}+d\frac{ed-fc}{p})^2+(c\frac{ed-fc}{p}-d\frac{ec+fd}{p})^2 = (\frac{e(c^2+d^2)}p)^2+(\frac{-f(c^2+d^2)}p)^2 = e^2+f^2$

第二个同理可证,说明了刚好为逆运算

也就说明了,对于每一个$X$的表示,其所有的可行拆解对应逆运算能得到$X$对应的表示,那么在考虑所有正负的情况下,通过 费马定理第一条,能不漏的计算出$X$的所有表示


然后整理一下值,我们发现$(\pm a,\pm b), (\pm b,\pm a)$ 所产生的16个点不会因为$a,b$的正负和顺序受到影响

所以我们仅去考虑$0 < a < b$, 也就是x正向轴,和y=x正向 之间区域的点作为a,b ,同时产生的点也仅考虑在这个区域的点。

那么有,根据费马定理的第一步,每组$((a,b),p)$ 产生两个新的点

点的计数(TODO

这样保证了点的不漏,每多一个质数,原来的一个点就能产生新的两个点,数量显然是$2^{d_1+d_2+\cdots+d_r-1}$

接下来考虑不重复计数

$((a,b), p = c^2+d^2) => ((ac+bd),(ad-bc)) or ((ac-bd),(ad+bc))$

若 $ac+bd = ad+bc $, 即$(a-b)(c-d) = 0$ 不会成立

若 $ac+bd = | ac - bd | $, 即$bd=0$或$ac =0$ 不会成立

所以 对于一个$((a,b),p)$ 产生的两个点必不相同


考虑不同的$a,b$, $a_1^2+b_1^2 = a_2^2+b_2^2$

$((a_1,b_1),p) => ((a_1c+b_1d),(a_1d-b_1c)) or ((a_1c-b_1d),(a_1d+b_1c))$

$((a_2,b_2),p) => ((a_2c+b_2d),(a_2d-b_2c)) or ((a_2c-b_2d),(a_2d+b_2c))$

若 $a_1c+b_1d = a_2c+b_2d$,

?????????????????????

目前看 相关资料,表示Dummit & Foote, 3rd ed., p 291有相关证明

点的计数

引理定义们

除法: 对于所有$a,b\in \mathbb{Z},b \neq 0$,有唯一$q,r\in \mathbb{Z}, 0\leq r < |b|$ 使得 $a=bq+r$

整除: 对于$a,b\in Z$ $a$是$b$的除数,当存在一个整数$x$, 使得$ax = b$, 写作$a \mid b$,不整除写作$a \nmid b$

恒成立的整除: $1 \mid a,-1 \mid a, a \mid a, -a \mid a$

质数: 仅有上述恒成立的整除关系,且为正,非1

互质: $a,b$ 互质,当它们公共的除数,仅有正负1

最大公约数: $gcd(a,b)$ 所有a和b共有的约数中最大的一个

合数: $a = p_1\cdot p_2 \cdots p_k$, 唯一表示

Ref

Brahmagupta-Fibonacci Identity

Fermat’s theorem on sums of two squares

Fermat Sum of Two Squares Calculator

Fermat’s 4n+1 Theorem

SUM OF TWO SQUARES