勾股数我们都很熟悉,a2+b2=c2,可是如何快速找到所有的勾股数组呢?
本原勾股数组a2+b2=c2性质:
1. a,b奇偶不同,c一定是奇数
2. 若b为偶数,c-b和c+b一定是完全平方数
3. 设t>s>=1,且均为奇数,则
a
=
s
∗
t
,
b
=
(
t
∗
t
−
s
∗
s
)
/
2
,
c
=
(
t
∗
t
+
s
∗
s
)
/
2
a=s*t,b=(t *t-s *s)/2,c=(t *t+s *s)/2
a=s∗t,b=(t∗t−s∗s)/2,c=(t∗t+s∗s)/2;其中a为奇数,b为偶数
有上面的性质以后我们就能迅速得到所有的勾股数组。
下面进行证明:
显然:gcd(a,b,c)=1,则由a2+b2=c2得到a,b,c两两互质。如果其中两个不互质则通过等式另一个肯定也含有相同的因子。
证明性质1:
假如a,b同为偶数,则c为偶数,则gcd(a,b,c)!=1,不可能。
假如a,b同为奇数,设a=2x+1,b=2y+1,则c2=4x2+4x+1+4y2+4y+1为偶数,则c必定为偶数,令c=2z,则2z2=2(x2+y2+x+y)+1,奇数不可能等于偶数,因此不成立。
故a,b奇偶不同,则c一定是奇数。QED
证明性质2:
另t=gcd(c-b,c+b),则
t
∣
2
c
,
t
∣
2
b
,
若
t
>
1
,
则
t
/
2
∣
c
,
t
/
2
∣
b
,
所
以
t
/
2
=
g
c
d
(
b
,
c
)
=
1
,
t
=
2
t|2c,t|2b,若t>1,则t/2|c,t/2|b,所以t/2=gcd(b,c)=1,t=2
t∣2c,t∣2b,若t>1,则t/2∣c,t/2∣b,所以t/2=gcd(b,c)=1,t=2所以t=1或者2.
又因为t|(c-b)(c+b)=a*a,a为奇数,所以不可能。因此t=1,c-b和c+b互质。
因为(c-b)(c+b)=aa,c-b,c+b均为完全平方数(由算术基本定理可知,他们的质因子的幂必须是偶数)QED
证明性质3:有以上,我们令s2=c-b,t2=c+b,则a=st,b=(t *t-s *s)/2,c=(t * t+s * s)/2。由a为奇数可得,s,t为奇数。QED