关于勾股数的规律

有可能是初中写的最后一篇了,中考啊~~
以前跟一些人提到过,互质的勾股数a,b,c(即a²+b²=c²)都满足一个规律(其实互质满足了,那么不互质也一定满足):
当a为奇数时:b=(a²-1)/2
c=(a²+1)/2
当a为偶数时:b=a²/4-1
c=a²/4+1
那么,这个条件是否充分呢(就是说当a,b,c满足以上规律时,这三个数是否为互质的勾股数)?
显而易见,如果不要求互质的话,这是绝对满足的,证明如下:
当a为奇数时:
a²+b²=a²+[(a²-1)/2]²=a²+(a²-1)²/4=a²+(a^4-2a²+1)/4=a²+(a^4)/4-a/2+1/4=(a^4)/4+a/2+1/4=(a²+1)²/4=[(a²+1)/2]²=c²
当a为偶数时:
a²+b²=a²+(a²/4+1)²=a²+(a^4)/16-a²/2+1=(a^4)/16+a²/2+1=[a²/4+1]²=c²
接下来讨论一下互质的问题:
当a为奇数时:∵a²=0(mod
a)
∴a²+1=1(mod a)
即(a²+1)与a互质
又因为:a为奇数,即a=1(mod
2)
∴(a²+1)/2也与a互质,即b与a互质
同理可证c与a互质
当a为偶数时:设a=2k,则:
a²/4-1=(2k)²/4-1=4k²/4-1=k²-1
∴k²与b互质,即只当b为偶数(k为奇数)时,a,b最大公因数可以为2
同理可证a,c也有相同性质,即要么a,b,c互质,要么a,b,c同除二后互质(不过在处理时,很多时候可以把后者转为前者)
然后再证一下这个公式的必要性(有瑕疵):
当a为奇数时:对于b,c不满足以上公式者,即b≠(a²-1)/2,c≠(a²+1)/2时:
b≠(a²-1)/2(mod
a), c≠(a²+1)/2(mod a)
又因为:a为奇数,即a=1(mod 2)
∴b≠a²-1(mod a), c≠a²+1(mod
a)
∴b≠-1(mod a),c≠1(mod a)
∴b²≠1(mod a),c²≠1(mod a)
∴c²-b²≠0(mod
a)
又因为:如果a,b,c满足a²+b²=c²,则c²-b²=a²,那么c²-b²=0(mod
a),矛盾,舍去
当a为偶数时:对于b,c不满足以上公式者,即b≠a²/4-1,c≠a²/4+1时:
因为a为偶数,所以设a=2k,则:
b≠(2k)²/4-1,c≠(2k)²/4+1
∴b≠k²-1,c≠k²+1
∴b≠-1(mod
k),c≠1(mod k)
∴b²≠1(mod k),c²≠1(mod k)

∴c²-b²≠0(mod
k)
又因为:如果a,b,c满足a²+b²=c²,则c²-b²=a²,那么c²-b²=0(mod a),且a=2k,所以c²-b²=0(mod
k),矛盾,舍去
OK,以上充分性证明纯属扯淡……几个月前写的时候还比较渣,现在渣的程度稍微降低了一个亿万分点,然后,证伪了……T_T……至于瑕疵在哪相信众神犇早已看透……反例嘛……我待会会说(学渣当然不会自己去求QAQ)
这个公式事实上只能生成部分基本勾股数,下面介绍一个真正的,基本勾股数的充要条件:
既然已经过了这么久才编辑的,我还是换个字母吧:对于x²+y²=z²,充要条件是:x=2ab,y=a²-b²,z=a²+b²(a,b互质,且a,b为一奇一偶)。必要性是显然的,至于充分性……诶,对学渣来说有点困难啊,咱慢慢来:
先说点定义的问题:显然x,y是有一奇一偶的(如果都为偶数,那么z也是偶数,此时不是基本勾股数,如果都为奇数,通过对模4的二次剩余的讨论,可以很容易证伪),所以我们可以设2
|
x(这个符号是说x除以2为整数,在这里表示x是偶数),就有x=2ab。
首先是引理:对于不定方程uv=w²(w>0,u>0,u,v互质),它的一切解可以表示为u=a²,v=b²,w=ab(a>0,b>0,a,b互质)。
证明:写出u,v的标准分解式=p1^e1·p2^e2·p3^e3…pk^ek,v=q1^f1·q2^f2·a3^f3……ql^fl,因为u,v互质,所以p,q中没有相同的质数,因此,w²=p1^e1·p2^e2·p3^e3…pk^ek·q1^f1·q2^f2·a3^f3……ql^fl。所以e1,e2,e3……ek,f1,f2,f3……fk一定都是偶数,于是u,v都是完全平方数,那么显然就证完了……
接下来是正式的证明:(x/2)²=x²/4=(z²-y²)/4=[(z+y)/2][(z-y)/2],设d为(z+y)/2和(z-y)/2的最大公约数,则d
| ((z+y)/2+(z-y)/2)=z,d |
([(z+y)/2]-[(z-y)/2])=y,又因为y,z互质,所以d=1。所以(z+y)/2与(z-y)/2互质。由引理知,存在(z+y)/2=a²,(z-y)/2=b²,x/2=ab。即x=2ab,y=a²-b²,z=a²+b²。
证毕。证明还是蛮简洁易懂的嘛……
至于x,y,z互质的证明嘛……设x,y最大公因数为d,那么d
| z=(a²+b²)且d | (a²-b²),于是d | a²,d |
b²,但是a,b互质,所以a²,b²互质,d就等于1了嘛,从而x,y互质,然后也能推出x,y,z互质。
反例……反例……反例……自己代a,b去生成吧……学渣写作业去了……
有些同学反映看不懂很多符号,于是好多东西都是手写的,好麻烦的说……
优美的排版,有种打程序缩进的感觉……

时间: 2025-01-06 21:50:13

关于勾股数的规律的相关文章

勾股数---Python

传说存在唯一一组勾股数,三个数的和是1000,那么它的积是多少呢? def judge(a,b,c):    if a+b<=c or b+c<=a or a+c<=b:        return 0    if a*a+b*b==c*c or b*b+c*c==a*a or a*a+c*c==b*b:        return 1    result=0for i in range(1,1000):    for j in range(1,1000-i):        k=100

Uva 106-Fermat vs. Pythagoras(勾股数性质)

题目链接:点击打开链接 题意:给出N,x^2+y^2=z^2 小于等于N的解(互素)的个数以及小于N的个数除掉所有解(包括不互素)已经用掉的数. 度娘给出勾股数的定义:只考虑互素的解,给出勾股数公式 a=2*m*n ,b=m*m-n*n ,c=m*m+n*n;  枚举m,n ,复杂度 O(log(N)^2) #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib&g

勾股数

程序地址:http://www.cheemoedu.com/exercise/16 问题描述: 所谓勾股数,一般是指能够构成直角三角形3条边的3个正整数(a,b,c).即a2+b2=c2,a,b,cΣN求1000以内的勾股数. 我的思路:使用for循环列出所有的数,连续判断是否满足a2+b2=c2关系,满足的就是勾股数,但是要注意,三个数中任意一个都不可以为0,且重复的如3,4,5和4,3,5要去除,只留下其中一个: 我的代码: for i in range(1,1000):     for j

UVA106 - Fermat vs. Pythagoras(素勾股数)

题目链接 题目大意:给你一个数n,勾股数三元组(x,y,z)的定义:满足x < y < z, x^2 + y^2 = z^2.现在问这里里面有多少个三元组是素勾股数即满足x,y, z两两互质.并且判断剩下的1-n的数有多少是没有出现在勾股数三元组中. 解题思路:先找出所有的素勾股数(x, y, z) ,那么便可以通过(kx, ky, kz)得到不是素勾股数的勾股数.接着要换种方式构造素勾股数,公式:x = m^2 - n^2; y = 2?m?n; z = m^2 + n^2:其中若 m 和

迅雷笔试题_素勾股数的个数

题目: 勾股数,是由三个正整数组成的数组:能符合勾股定理 a*a + b*b = c*c ,(a, b, c) 的正整数解.如果 (a, b, c) 是勾股数,它们的正整数倍数,也是勾股数.如果 (a, b, c) 互质,它们就称为素勾股数.给定正整数N, 计算出小于或等于N的素勾股数个数. 样例输入: 10 样例输入: 1 思路: 产生素勾股数的方式: 设m > n .m 和n 均是正整数, a=m2-n2 b=2mn c= m2+n2 若m 和n 是互质,而且m 和n 其中有一个是偶数,计算

HDU 6441 费马大定理+勾股数

#include <bits/stdc++.h> #define pb push_back #define mp make_pair #define fi first #define se second #define all(a) (a).begin(), (a).end() #define fillchar(a, x) memset(a, x, sizeof(a)) #define huan printf("\n") #define debug(a,b) cout<

2015浙工大校赛-Problem C: 三角—— 费马大定理+勾股数

题目 有一个直角三角形三边为 A,B,C 三个整数.已知 C 为最长边长,求一组B,C,使得B和C最接近. (题目链接) 分析 打表找规律. 或者直接一点的枚举 $C-B$ 的值.(既然枚举 B 不现实,枚举差值是一种很好的思路啊,学习了 %%% 博客) 或者使用费马大定理(的一小部分), 当 $A$ 为奇数时($A > 1$),存在 $C-B = 1$ 的整数解使得 $A^2 + B^2 = C^2$: 当 $A$ 为偶数时 ($A > 2$),存在 $C-B = 2$ 的整数解使得 $A^

计算所有小于N的勾股数组合,可以写入txt文件保存,每组占一行。

1 #ifndef PYTHAGOREAN_H_ 2 #define PYTHAGOREAN_H_ 3 #include <iostream> 4 class Pythagorean { 5 public: 6 // 打印出边长小于 n 的符合勾股定理的三角形的三边长度 7 // print right triangles' sides (sides < n) 8 // 可以指定输出流,默认为std::cout 9 std::ostream& operator()(int n,

【2018CCPC网络赛 1004】Find Integer(勾股数+费马大定理)

Problem Description people in USSS love math very much, and there is a famous math problem . give you two integers n,a,you are required to find 2 integers b,c such that an+bn=cn. Input one line contains one integer T;(1≤T≤1000000) next T lines contai