关于基本勾股数规律的探讨总结与例题!
勾股数:
- 凡是可以构成一个直角三角形三边的一组正整数,称之为勾股数。
- 勾股数 —— 构成直角三角形的充分且必要条件。
1.
首先来观察:3 4 5;5 12 13;7 24 25;9 40 41;11 60 61; ... ;发现这些勾股数都是以奇数开头,从3起就没有间断过。
于是:若是大于1的奇数,由于奇数平方还是奇数,它平方后就可以拆成相邻的两个整数相加,那么奇数与这两个整数构成一组勾股数。此规律对于任意大于1的奇数都成立。
证明:
设此奇数:,奇数=偶数+奇数
那么,
则:
证毕。
2.
再来观察: 4 3 5;6 8 10;8 15 17;10 24 26;… ;发现这些都是以偶数开头。
于是: 对于大于2的偶数,平方后除以4再减一或者加一即构成一组勾股数。也可以说:把这个偶数除以2再平方,然后这个平方数加一或者减一即得一组勾股数。
证明:
设此偶数:, 则另外两条边:
3.
任取两个正整数m、n(m>n),那么:
构成一组勾股数。
证明:将上面代数式带入验证即可。
以上可得:任意大于2的整数都可以找出另外两个数构成勾股数。
此外, 观察分析上述的勾股数,可看出它们具有下列二个特点:
- 直角三角形短直角边为奇数(大于1),另一条直角边与斜边是两个连续自然数。
- 如果短直角边为奇数,则直角三角形的周长等于短直角边的平方与其本身的和(由上述1可证明)。
- 下面来看一个典型例题:
Codeforces Round #368 (Div. 2)
题意很简单,由样例即可知:给出一个整数问是否能找出另外两个数使得构成一组勾股数。如不能则输出-1,反之,则输出任意符合的两个数。
很明显是上述1、2情况。
给出两种代码:
1.0 由自己摸索:
int main()
{long long a;while(~scanf("%I64d",&a)){if(a<3) printf("-1\n");//小于3不符合;else{if(a%2) printf("%I64d %I64d\n",a*a/2,a*a/2+1);奇数很容易推导出来;else{if((a/2)%2){a/=2;printf("%I64d %I64d\n",a*a/2*2,(a*a)/2*2+2);continue;}if(a%3==0){long long x=a/3;printf("%I64d %I64d\n",4*x,5*x);}else if(a%4==0){long long x=a/4;printf("%I64d %I64d\n",3*x,5*x);}else if(a%5==0){long long x=a/5;printf("%I64d %I64d\n",3*x,4*x);}else printf("-1\n");}}}return 0;
}
2.0 用勾股数定理:
int main()
{long long a;while(~scanf("%I64d",&a)){if(a<3){printf("-1\n");continue;}if(a%2) printf("%I64d %I64d\n",a*a/2,a*a/2+1);else{a/=2;long long b=a*a-1;long long c=b+2;printf("%I64d %I64d\n",b,c);}}return 0;
}//明显简短许多。
关于基本勾股数规律的探讨总结与例题!相关推荐
- 数学--数论--直角三角形--勾股数---奇偶数列法则 a^2+b^2=c^2
先说勾股数: 勾股数,又名毕氏三元数 .勾股数就是可以构成一个直角三角形三边的一组正整数.勾股定理:直角三角形两条直角边a.b的平方和等于斜边c的平方(a²+b²=c²) 勾股数规律: 首先是奇数组口 ...
- 三个数差的平方公式推导过程_勾股数公式的简单推导
勾股数 是指满足 的正整数,它们的通用公式为 ,下边我从定义出发,利用平方差公式举例实验找规律,推导出这一通用公式. 由 可知 当 为奇数时 和 全都是奇数:当 为偶数时 和 全都是偶数.( ,与 同 ...
- hdu6441 Find Integer 求勾股数 费马大定理
题目传送门 题目大意: 给出a和n,求满足的b和c. 思路: 数论题目,没什么好说的. 根据费马大定理,当n>2时不存在正整数解. 当n=0或者1时特判一下就可以了,也就是此时变成了一个求勾股数 ...
- MATLAB找勾股数,一种寻找勾股数的方法
一种寻找勾股数的方法 作者:小龙博客 2011年08月12日 2条评论 分类:杂七杂八 爱数学 勾股定理是初中数学的一个重要内容,早在古代人们就已对此做出了深入的研究,并且取得了显著的成果.小龙以前上 ...
- 勾股数(毕达哥拉斯三元组)
勾股数(毕达哥拉斯三元组) 勾股数:可以构成一组直角三角形边长的三个正整数. eg: 3 4 5 勾股数的规律: 1)任何大于1的正奇数a=2k+1,其平方t=a^2仍为奇数,且将平方数拆成两个相邻的 ...
- 【华为OD机试真题 C++】 勾股数元组【2022 Q4 | 100分】
■ 题目描述 [勾股数元组] 如果3个正整数(a,b,c)满足a2 + b2 = c2的关系,则称(a,b,c)为勾股数(著名的勾三股四弦五), 为了探索勾股数的规律,我们定义如果勾股数(a,b,c) ...
- 勾股数元组( 如果3个正整数(a,b,c)满足a2 + b2 = c2的关系)
注意!答案仅作为参考(实际考试中下列代码通过用例100%,但不代表最优解) 如果3个正整数(a,b,c)满足a2 + b2 = c2的关系,则称(a,b,c)为勾股数(著名的勾三股四弦 五),为了探索 ...
- C语言 · 勾股数
勾股数 勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形. 已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数. 求满足这个条件的不同直角三角形的个数. [数据格式] ...
- 【c语言】蓝桥杯算法提高 勾股数
问题描述 勾股数是一组三个自然数,a < b < c,以这三个数为三角形的三条边能够形成一个直角三角形 输出所有a + b + c <= 1000的勾股数 a小的先输出:a相同的,b ...
- python【蓝桥杯vip练习题库】ADV-187 勾股数
试题 算法提高 勾股数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 勾股数是一组三个自然数,a < b < c,以这三个数为三角形的三条边能够形成一个直角三角形 输出 ...
最新文章
- vector赋值的常见错误
- 解决虚拟机 正在决定eht0 的ip信息失败 无链接-- 添加虚拟网卡
- 十七、MySQL触发器(创建、删除、查看)详解
- java 注释 过时_Java 注解
- 永久免费!原型设计利器摹客RP正式发布
- matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
- 南信大滨江学院计算机考试姜青山,【数据库原理】滨江学院姜青山 期末试卷知识点笔记整理 南京信息工程大学...
- OSSIM5 自定义安装
- matlab imnoise 用法,使用matlab的imnoise添加噪声
- 5.3 FIR低通滤波器的设计
- 3559A对接IMX577 4lane 12M
- matlab乘除号怎么打,matlab中的乘除法
- [20160831]关于数据块Checksum.txt
- 【转摘】图像思维与意识观念的统一——读毕建勋《子非鱼》有感(初稿)[1]
- 永恒之蓝MS17-010漏洞复现
- HTML中如何将字体加粗-前端入门
- 最新Z-blog黑色极简风格文章博客主题模板源码
- 使用Ultra Librarian生成Cadence Allegro的PCB封装库和OrCAD Capture CIS的原理图库
- 医院PACS系统之安装(win10)
- Vivado错误[Place30-494]