2017年计算机等考二级c++:c++勾股数公式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
勾股数公式为⼤家介绍了很喜欢研究数学,现在他就遇到⼀个有趣的问题,⽐如,直⾓三⾓形的周长是120的话,详情请看以下内容:
Roowe(没见过这么BT的,拿⾃⼰名字去编题⽬)很喜欢研究数学,现在他就遇到⼀个有趣的问题,⽐如,直⾓三⾓形的周长是120的话,那么它的三条边可以是20,48,52,或者24,45,51,还有30,40, 50,有三种不同的解,现在他想知道⼀个区间[a,b]中哪个数的解数最多(1<= a, b <= 1000000)?
输⼊
10 100
1000 100000
1 1000000
300000 700000
100000 300000
100000 700000
800000 900000
104 720720
80 360360
1 1000000
输出
60 2
55440 40
720720 104
360360 80
240240 64
360360 80
831600 78
720720 104
360360 80
720720 104
让我做下,本来懒得做的,但是他说打表就OK了,于是我就欣然答应了。
奈何他眼中的打表难易度和我眼中不⼀样,再次看到了数学系⾼材⽣和我的差距,嘿嘿。
第⼀次尝试,失败。
我说,不就是勾股定理a^2+b^2=c^2吗?结果他说,你再去补补数学知识。
于是给了我⼀个链接,我⼀看,不就是百度百科的勾股数吗,于是就暂时搁浅了。
今晚第⼆次尝试,仍然失败。
依稀记得昨天他给我说了有个什么勾股数公式,在百度百科那个勾股数的最下⾯介绍了,但是我看了半天,还是有点迷糊。
然后让他把代码给我看看,好吧,结合百科介绍的勾股数公式,茅塞顿开。
这⾥给出勾股数公式
直⾓三⾓形三条边a, b, c,其中a,b是直⾓边。
则 a=2*m*n
b=m^2-n^2
c=m^2+n^2
当然,这是有前提条件的,也就是其局限性:“勾股数的公式还是有局限的。
勾股数公式可以得到所有的基本勾股数,但是不可能得到所有的派⽣勾股数。
⽐如6,8,10;9,12,15…,就不能全部有公式计算出来”
也就是说,3,4,5可以求出来,但是其倍数6,8,10就不⾏了。
这⾥要注意⼏个问题构成三⾓形的条件
2*m*n+m^2-n^2 > m^2+n^2
既m>n
2.a, b, c互质,即⽆法得到派⽣的勾股数。