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

(3,4, 5),(5,12,13),(8,15,17),(7,24,25),(9,40,41),(11,60,61),(28,45,56),(33,56,65)。

由这个短表容易得到一些结论,例如,似乎a与b奇偶性不同且c总是奇数。

证明如下:

若a与b都是偶数,则c也是偶数,意味着a,b,c有公因数2,所以三元组不是本原的,其次,若a,b都是奇数,那么c必然是偶数,这样假设a=2x+1,b=2y+1,c=2z,代入a^2 + b^2 = c^2,化简后得2x^2 + 2x + 2y^2 + 2y + 1 = 2z,显然不成立。所以,考虑到a,b的互换性,我们得出a是奇数,b是偶数,a,b,c没有公因数。

接着观察如下,如果(a,b,c)是本原勾股数组,则可进行因数分解:

a^2 = c^2 – b^2 = (c - b) * (c + b)

下面为举例:

3^2 = 5^2 - 4^2 = (5-4)(5+4) = 1 * 9,

15^2 = 17^2 - 8^2 = (17-8)(17+8) = 9 * 25,

21^2 = 29^2 - 20^2 = (29-20)(29+20) = 9 * 49。

我们发现似乎c - b与c + b本身总是平方数,如何证明呢?

由前面观察,c – b与c + b似乎没有公因数,证明如下:

假设正整数d是c-b与c+b的公因数,则d也整除(c - b) + ( c + b) = 2c 和 (c + b) - (c - b) = 2b,但是b和c没有公因数,所以d = 1或d = 2,但是d也整除(c - b)* (c + b) = a^2,因为a是奇数,所以只能是d = 1,所以c - b与c + b没有公因数。

现在我们知道c-b与c+b无公因数并且相乘为平方数,所以c-b与c+b自身都是平方数,记:

c + b = s^2, c – b = t^2, 其中s> t≥1是没有公因数的奇数。所以解为:

b = (s^2 - t^2)/ 2,

c = (s^2 + t^2)/ 2,

a = s * t.

从而得出勾股数组定理:

每个本原勾股数组(a,b,c)(其中a为奇数,b为偶数)都可从如下公式得出:

a = s * t,b = (s^2 - t^2)/ 2,  c = (s^2 + t^2)/ 2。

其中a>t≥1是任意没有公因数的奇数。

如果取t=1,则三元组(s,  (s^2 - 1)/ 2, (s^2 + 1)/ 2),它的b与c值仅相差1.

今天正好做了一道有关的题:

题目链接:codeforces 707C. Pythagorean Triples

题意:给出一个数,构造勾股数。

题解:

a≤2时无解;

a为奇数时,直接用上面取t = 1的公式得b = (a^2 - 1)/ 2, c = (a^2 + 1)/ 2;

a为偶数时,当a = 4 *d时,直接可以套勾股数(3,4,5),从而b= 3 *d, c = 5 * d,

                     对于其他的偶数a,可以a = a/ 2, 将a化为奇数,再直接用上面公式即可.

 1 #include<cstdio>
 2 int main(){
 3     long long a;
 4     scanf("%I64d", &a);
 5     if(a == 1 || a == 2)
 6         printf("-1\n");
 7     else if(a % 4 == 0){
 8         printf("%I64d %I64d\n", a/4*3, a/4*5);
 9     }
10     else if(a % 2 == 0){
11         a /= 2;
12         printf("%I64d %I64d\n", (a*a-1)/2*2, (a*a+1)/2*2);
13     }
14     else
15         printf("%I64d %I64d\n", (a*a-1)/2, (a*a+1)/2);
16     return 0;
17 }

转载于:https://www.cnblogs.com/GraceSkyer/p/5847338.html

勾股数组【学习笔记】相关推荐

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

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

  2. 勾股数组 学习笔记

    颓废了一个暑假,想做点CF提高一下智商,然后就被这题卡住了.    http://codeforces.com/contest/707/problem/C 题目大意是给出各条边都是正整数的直角三角形的 ...

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

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

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

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

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

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

  6. matlab毕达哥拉斯质数,“毕达哥拉斯-史仲夏”常用勾股数组表

    毕达哥拉斯方程:(2uv)^2+(u^2-v^2)^2=(u^2+v^2)^2 求证勾股数组的规律: 1.uv=质数:只有一组勾股数组. 2.u^2+v^2=u^2-v^2+2v^2. 只要掌握了这两 ...

  7. URAL 2032 - Conspiracy Theory and Rebranding【本源勾股数组】

    [题意] 给出三角形的三个边长,均是10^7以内的整数,问三角形的三个角的坐标是否能均是整数,输出其中任意一个解. [题解] 一开始想的是枚举一条边的横坐标,然后通过勾股定理以及算角度求出其他点的坐标 ...

  8. 三元二次方程式x2+y 2=z2的正整数解x、y、z称为一组勾股数,又称为毕达哥拉斯三元数组。该方程式也称为“商高方程”或“毕达哥拉斯方程”。 试通过程序设计求指定区间[a,b]内的所有勾股数组。

    /*试通过程序设计求指定区间[a,b]内的所有勾股数组. 输入 输入两个正整数a, b (a<b). 输出 输出[a,b]区间内的所有勾股数组. 样例输入 30, 90 样例输出*/ #defi ...

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

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

最新文章

  1. 水泵怎么做_不是说鱼缸里放置三合一水泵都会起到反作用,也得看什么缸什么鱼...
  2. Dribbble for windows phone 8
  3. Android APP层 ShellUtils
  4. python非数值型数据_Python机器学习实战:如何处理非数值特征
  5. 有关循环和判断的几个小问题
  6. 钉钉密聊安不安全 钉钉密聊别人能看到吗
  7. android http封装类,HTTP封装类 工具类 For Android
  8. HDU1407 测试你是否和LTC水平一样高【暴力】
  9. 虚拟机克隆后修改网络部分
  10. 关于市场调查分析与需求分析的心得
  11. 从医生看病和快餐店点餐理解Node.js的事件驱动
  12. 国产操作系统Deepin安装
  13. 在中国程序员工作是青春饭吗?
  14. 卡耐基梅隆大学计算机科学,卡耐基梅隆大学之计算机科学系
  15. 飞信linux下载文件,在Linux上安装飞信
  16. edp和edt哪个好_香水edt和edp的区别
  17. 关于智能家居,一篇绝对中立的详细指南及各类问题解答
  18. 电脑记账最简单的方法
  19. 移动智能与终端安全防护
  20. 民俗多种内涵-农业大健康·万祥军:牛首山谋定世外桃源

热门文章

  1. mysql 5.7 drop table_MySQL5.7下面,误操作导致的drop table db1.tb1; 的恢复方法:
  2. 【NLP】一文了解命名实体识别
  3. Java中字符串CST的时间日期转换
  4. 秋季代码调试报错记录
  5. css 去掉li 标签列表项前面的点
  6. Python进阶篇:百度指数解密【抓包|JS逆向|数据区分】
  7. 【PowerPoint】快速设计一份PPT的模板样式
  8. 详解僵尸进程、进程等待
  9. [UVM]UVM环境中的clock agent方案
  10. TAP/TUN/VETH理解