目录

  • 基本性质
  • 勾股数组定理
  • 代码与例题
  • 其他性质
  • 与单位圆的联系

基本性质

  勾股数组我们都很熟悉,给一个勾股数组同乘一个整数得到的仍是勾股数组,但我们对它并不感兴趣,今天我们只研究它的本原形式(当然是在正整数范围内)。

本原勾股数组(PPT)是一个满足 $ a^{2}+b^{2}=c^{2} $ 的三元组 $ (a,b,c) $ ,且 \(a,b,c\) 互素(除1外没有其他公因数)。
例如:$ (3,4,5) (5,12,13) (15,8,17) (7,24,25) (21,20,29) (35,12,37) (9,40,41) $

  观察这些例子,我们容易得到一些结论。例如,

性质1.(1) 本原勾股数组 $ (a,b,c) $ 中, \(a\)与\(b\)奇偶性不同,并且\(c\)为奇数。

  这是正确的,证明如下(分类讨论):

    若 \(a,b\) 均为偶数,那么\(c\)也为偶数,则此勾股数组不是本原的,排除;
    若 \(a,b\) 均为奇数,那么\(c\)为偶数,则必存在正整数 \(x,y,z\) 使得 $ a=2x+1, b=2y+1, c=2z$ ,于是有

$(2x+1)^{2}+(2y+1)^{2}=(2z)^{2}$, $4x^{2}+4x+4y^{2}+4y+2=4z^{2}$, $2x^{2}+2x+2y^{2}+2y+1=2z^{2}$

    由于两边奇偶性不同,故等式不成立;
    因此\(a,b\)奇偶性不同,由此\(c\)为奇数(方便起见,我们约定,如无特殊说明,下文中\(a\)为奇数,\(b\)为偶数)


勾股数组定理

  有了这个性质以后,我们就可以开始考虑求解一个问题:如何求出所有的本原勾股数组?换句话说,如何表示出方程\(a^{2}+b^{2}=c^{2}\)(\(a\)为奇数,\(b\)为偶数,且\(a,b,c\)互素)的所有正整数解?

  先写出结论:

(勾股数组定理)每个本原勾股数组(a,b,c)(a为奇数,b为偶数)均可以由下面的公式给出

\(a=st,b=\frac{(s^{2}-t^{2})}{2},c=\frac{(s^{2}+t^{2})}{2}\)
其中 \(s>t\geq1,s,t\) 互素且均为奇数

  下面,我们将使用因式分解与整除性证明这一定理。

  首先移项并进行因式分解:\(a^{2}=(c+b)(c-b)\)
  然后……就没有思路了 o(╯□╰)o 别急,我们先列个表看看这个式子有什么性质:

\(3=(5+4)(5-4)=9\cdot1\)
\(5=(13+12)(13-12)=25\cdot1\)
\(15=(17+8)(17-8)=25\cdot9\)
\(7=(25+24)(25-24)=49\cdot1\)
\(21=(29+20)(29-20)=49\cdot9\)
\(35=(37+12)(37-12)=49\cdot25\)

  我们发现,貌似..... \(c+b\) 与 \(c-b\) 都是完全平方数诶,而且 \(c+b\) 与 \(c-b\) 好像是互素的。等等, \(c+b\) 与 \(c-b\) 的积\(a^{2}\)是完全平方数,假设 \(c+b\) 与 \(c-b\) 互素,那么由唯一分解定理,就可以推出 \(c+b\) 与 \(c-b\) 都是完全平方数(这是显然的,因为 \(c+b\) 与 \(c-b\) 分解到的素数完全不同)。于是接下来证明 \(c+b\) 与 \(c-b\) 互素:设整数d整除 \(c+b\) 与 \(c-b\) (即\(d\)为 \(c+b\) 与 \(c-b\) 的公因数),那么\(d\)也整除

\((c+b)+(c-b)=2c, (c+b)-(c-b)=2b\)

  又 \(b\) 与 \(c\) 互素,那么\(d\)只能等于1或2。又\(d\)整除\(c-b\)(奇数),那么\(d\)只能等于1(或者也可以由\(d\)整除 \((c-b)(c+b)=a^{2}\) 且\(a\)为奇数推出)。于是 \(c+b\) 与 \(c-b\) 的公因数只有1(也即互素),即可得到 \(c+b\) 与 \(c-b\) 均为完全平方数,于是有:

$ c+b=s^{2}, c-b=t^{2} $

其中\(s>t≥1\),\(s,t\)互素且均为奇数(这样才能满足 \(c+b\) 与 \(c-b\) 的其它性质)
关于\(c\)与\(b\)解方程,并代入求\(a\)得到

$b=\frac{(s^{2}-t^{2})}{2},c=\frac{(s^{2}+t^{2})}{2},a=\sqrt{c^{2}-b^{2}}=st$


代码与例题

  那么,这个定理有什么用呢?当然就是打表列举本原勾股数组了,代码如下:

int gcd(int a,int b){ //求a,b的最大公因数return b==0?a:gcd(b,a%b);
}
void ppt_table(int n){ //打印所有c不超过n的本原勾股数组int a,b,c;int maxs=(int)sqrt(2*n); //s的上界for(int s=2;s<=maxs;s++)for(int t=1;t<s;t++)if(s%2 && t%2 && gcd(s,t)==1){a=s*t;b=(s*s-t*t)/2;c=(s*s+t*t)/2;if(c<=n) printf("%d %d %d",a,b,c);}
}

例题(这个知识点的题几乎没有,事实上我只找到这一个):
洛谷 UVA106 费马vs毕达哥拉斯
题意:给定\(N\),求:1.满足\(c≤N\)的本原勾股数组的个数;2.满足\(c≤N\)的勾股数组(不一定本原)都不包含的正整数 \(p(0<p≤N)\) 的个数。
分析:使用勾股数组定理,将上面的代码稍稍更改一下即可。

展开查看源代码

#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;const int N=1e6+5;
int vis[N],cnt,ans;int gcd(int a,int b){return b==0?a:gcd(b,a%b);
}
void solve(int n){int a,b,c;int maxs=(int)sqrt(2*n);for(int s=2;s<=maxs;s++)for(int t=1;t<s;t++)if(s%2 && t%2 && gcd(s,t)==1){a=s*t;b=(s*s-t*t)/2;c=(s*s+t*t)/2;if(c<=n) cnt++;for(int k=1;k*c<=n;k++)vis[k*a]=vis[k*b]=vis[k*c]=1;}
}int main(){int n;while(scanf("%d",&n)==1){solve(n);for(int i=1;i<=n;i++)if(!vis[i]) ans++;printf("%d %d\n",cnt,ans);memset(vis,0,sizeof(vis));cnt=ans=0;}return 0;
}

其他性质

  有没有注意到第一个性质的序号是“1.(1)”?没错,这样类似的性质还有两条,证明方法是类似的:

性质1.(2) 本原勾股数组 $ (a,b,c) $ 中, \(a\) 与 \(b\) 有且仅有一个是\(3\)的倍数,并且\(c\)不是\(3\)的倍数。
性质1.(3) 本原勾股数组 $ (a,b,c) $ 中, \(a,b,c\) 中有且仅有一个是\(5\)的倍数。

  证明方法与性质1.(1)完全类似,分类讨论并一一排除即可。值得一提的是,在证明 \(a,b,c\) 不可能都不是\(5\)的倍数时,会发现诸多情况中,左式模\(5\)的值总是\(0,2,3\),而右式的总是\(1,4\),于是这一情况不成立。
  另外,由勾股数组定理也可以推出几条有趣的性质:

性质2. 本原勾股数组 $ (a,b,c) $ 中, 若 \(s-t=2\),则 \(c-a=2\)。
性质3. 本原勾股数组 $ (a,b,c) $ 中, \(2(c-a)\) 是完全平方数。

  证明:由勾股数组定理,\(2(c-a)=s^{2}+t^{2}-2st=(s-t)^{2}=4\),故 \(s-t=2\).


与单位圆的联系

用 \(c^{2}\) 除方程 $ a^{2}+b^{2}=c^{2} $ 得到

$ (\frac{a}{c})^{2}+(\frac{b}{c})^{2}=1$

因此,有理数对 \((a/c,b/c)\) 是方程 \(x^{2}+y^{2}=1\) 的解。

令 \(u=\frac{s+t}{2},v=\frac{s-t}{2}\) ,

由勾股数组定理得到, \((a,b,c)=(u^{2}-v^{2},2uv,u^{2}+v^{2})\)

同除以 \(u^{2}+v^{2}\) ,得到 \((\frac{u^{2}-v^{2}}{u^{2}+v^{2}},\frac{2uv}{u^{2}+v^{2}},1)\)

令 \(m=u/v\),于是有 \((a,b)=(\frac{1-m^{2}}{1+m^{2}},\frac{2m}{1+m^{2}})\) ,这便是可以给出单位圆上所有有理点的定理:

定理:圆 \(x^{2}+y^{2}=1\) 上的所有坐标为有理数的点都可以由公式

\((x,y)=(\frac{1-m^{2}}{1+m^{2}},\frac{2m}{1+m^{2}})\)
得到,其中\(m\)取有理数值。(点 \((-1,0)\) 除外,这是当 \(m\to\infty\) 的极限值)

  事实上,上述推理并不严谨,这个定理严格一些的证明需要从过点 \((-1,0)\) 的直线及其斜率出发,各位看官若是有兴趣可自行完成证明。

End.

转载于:https://www.cnblogs.com/yhyxy/p/11333686.html

【数论】本原勾股数组(PPT)的性质相关推荐

  1. 本原勾股数组(PPT)

    概念 本原勾股数组(PPT)是一个三元组(a,b,c),其中a,b,c没有公因数即gcd(a,b,c)=1 且满足 a2+b2=c2a^{2}+b^{2}=c^{2}a2+b2=c2 (3,4,5), ...

  2. 本原勾股数组(数论日常1)

    本原勾股数组 本原勾股数组(简称PPT)是一个三元组(a,b,c),其中a,b,c没有公因数,且满足 a2+b2=c2a^2+b^2=c^2a2+b2=c2 下面的定理可以求它的所有解. 勾股数组定理 ...

  3. 数论概论笔记(二)勾股数组

    毕达哥拉斯定理(即勾股定理) a2+b2=c2a^2+b^2=c^2a2+b2=c2 显然勾股数组有无穷个,对存在的勾股数组每个数乘上一个正整数d即可得到新的勾股数组. 因此我们关注两两互质的三元组, ...

  4. 《数论概论》读书笔记(第二章)勾股数组

    本章主要讨论的是本原勾股数组,也就是关于满足a2+b2=c2a^2+b^2=c^2的三元组(a,b,c)(a,b,c),且(a,b,c)(a,b,c)互质的问题. 这章中提到一个概念:本原勾股数组(P ...

  5. 数论概论 第二章 勾股数组

    本章主要讨论的是勾股数组,也就是关于满足a^2+b^2=c^2的三元组(a,b,c)的问题. 其实,对于勾股数组的个数进行讨论并没有多大意义,因为已知a,b,c为勾股数组,那么显然有da,db,dc( ...

  6. 数论概论读书笔记 2.勾股数组

    勾股数组 本原勾股数组是一个三元组(a,b,c) 其中a,b,c没有公因数,且满足 a2+b2=c2a2+b2=c2 a^2+b^2=c^2 定理2.1 (勾股数组定理). 每个本原勾股数组(a,b, ...

  7. 勾股数组【学习笔记】

    本原勾股数组(简写为PPT)是一个三元组(a,b,c),其中a,b,c没有公因数,且满足a^2 + b^2 = c^2.例如下面是一项本原勾股数组: (3,4, 5),(5,12,13),(8,15, ...

  8. python求基本勾股数_第一章:勾股数组(1)

    毕达哥拉斯定理(即勾股定理),它表明任一个直角三角形的两条直角边长的平方和等于斜边长的平方.用公式表示就是 a^2 + b^2 = c^2 第一个问题是,是否存在无穷多个勾股数组,即满足方程a^2 + ...

  9. java如何找出勾股数组_勾股数组 学习笔记

    题目大意是给出各条边都是正整数的直角三角形的一条边长,求另外两条边可能的一种方案. 除了爆搜脑子一片空白,然后就很没志气的看了题解,提到了勾股数组,于是学习了一下.网络上的资料感觉证明不是详细,所以自 ...

最新文章

  1. 神经网络与机器学习 笔记—LMS(最小均方算法)和学习率退火
  2. python qtextedit设置光标位置_Python基础命令学习——就这一篇文章就够了
  3. 山东省高等学校2018年计算机教学研究年会通知
  4. 阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
  5. Python使用matplotlib可视化模拟龟兔赛跑折线图
  6. win10开启无线网卡服务器,Win10笔记本电脑无线网卡 教你如何开启Win10笔记本内置无线网卡...
  7. sass-ihrm项目-系统用户权限设计概述-部门微服务、部门前端
  8. 支付宝手机网站支付详细流程
  9. 那,那,那,轻灵的舞影,绝美的身姿──对上古绚丽舞姿的乱谈
  10. C语言的指南针——指针与结构体
  11. Java 将表格数据导入word文档中
  12. python多元线性回归实例_利用Python进行数据分析之多元线性回归案例
  13. win 10 QT 5.15.2 modbus QModbusRtuSerialMaster 客户端
  14. 30天简单了解Java-Day5深入类和对象
  15. 蚂蚁金服暂缓上市,程序IT圈炸了
  16. 宇视摄像机RTSP地址格式规则
  17. vue 中报错 [Element Migrating][ElDialog][Attribute]: size is removed.
  18. PVS更新Vdisk大型环境中提升为测试版
  19. locust压测工具:启动概述
  20. 加了@CrossOrigin ,仍然报跨域错误

热门文章

  1. 前端网页三剑客------HTML基础
  2. 尘封的老照片修复上色,方寸之间再现温暖情怀
  3. Java二叉树逆序遍历_二叉树遍历小结
  4. 优秀的技术管理者需要具备哪些能力?
  5. Linux服务器文件夹同步到Windows10文件夹中
  6. 修复浏览器报错 Error in mounted hook (Promise/async): “[object Object]“
  7. SqlServer中Int类型快速转uniqueidentifier
  8. 让孩子健康用电脑:家长控制
  9. vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
  10. 秦时明月主题 html静态网站 全套源码资源