勾股数通项公式

· · 算法·理论

我们需要找到所有满足 a^2+b^2=c^2 的正整数 (a,b,c),其中 abc 互质,在这样的三元组叫做本原勾股数。如果允许 abc 有除 1 以外的其他公因数,则所有的解可以表示为:

(a,b,c)=k \cdot (a_0,b_0,c_0), k \in \mathbb{N}

其中 (a_0,b_0,c_0) 是一组本原勾股数。

所以,我们只需要研究本原勾股数就行了。

观察一下

我们可以先观察一下勾股数表格,可以发现,ab 不会同时为奇数。接下来,我们可以尝试证明这一点。

首先,如果 ab 都是奇数,那么 c 就应该是偶数。

> 设 $c=2 \times x$,那么 $c^2=4 \times x^2$。所以 $c^2$ 是 $4$ 的倍数。 然后,我们可以把所有可能的 $a$ 和 $b$ 分为四类: - $a \equiv 1 \pmod 4$ 且 $b\equiv 1 \pmod 4$: - $a^2 \equiv 1\times 1 \pmod 4$,$b^2 \equiv 1 \times 1 \pmod 4$。 - $c^2 \equiv 2 \pmod 4

但是,c^2 应该是 4 的倍数,前后矛盾了,所以 ab 不可能同时是奇数。

数学推导

在这里,我们不妨设:

我们的方程是:

a^2+b^2=c^2

转化一下:

b^2=c^2-a^2=(c-a) \times (c+a)

我们可以设 b=2 \times k,那么有:

4\times k^2 = (c-a) \times (c+a)

两边同时除以 4

k^2=(\frac{c-a}{2}) \times (\frac{c+a}{2})

在这里,我们可以设 m=\frac{c-a}{2}n=\frac{c+a}{2}

那么,有:

因为 ac 互质,所以 mn 也互质,不然 ac 就会有公因数 \gcd(m,n)

因为 nm 互质,并且 n \times m 是完全平方数,所以 nm 也是完全平方数。

我们设 m=s^2n=t^2,那么就有:

举个例子

这里就设 t=7,并且 s=4

那么就有:

## 课后问题 为什么 $a$ 和 $c$ 互质,所以 $m$ 和 $n$ 互质呢? 提醒一下:可以用分配律证明。 为什么 $n$ 和 $m$ 互质,并且 $n \times m$ 是完全平方数,所以 $n$ 和 $m$ 都是完全平方数呢? 提醒一下:可以从质因数分解方面想一想。