2018-2019-2 20175310 个人项目报告5--勾股数
定义:
勾股数是指能够构成直角三角形三条边的三个正整数,例如:a²+b²=c²
需求分析:
根据勾股数的定义,用Java语言进行设计实现。
设计实现:
本代码实现的是计算100
以内所有勾股数
伪代码:
1、本代码有三个循环,第一个i循环是对勾股数组中第一个数进行循环,从1开始到99结束
2、第二个j循环是对勾股数组中第二个数进行循环,为了避免重复,将三个数从小到大输出,即输出的勾股数组a,b,c满足a<=b<c,因此第二个循环从i开始到99结束
3、第三个n循环是对勾股数组中第三个数进行循环,因为两边之和大于第三边,因此第三个数肯定比前两个数大,所以第三个循环从j+1开始到99结束
4、判断(i*i+j*j)==n*n是否成立,若成立则输出勾股数组
难点总结:
本题的难点主要在于三个循环的嵌套上,特别是循环的开始与结束点的选择,我一开始三个循环都是定的从1
开始到99
结束,结果出现了下面这种情况:
出现了大量的重复,因为a,b,c
和b,a,c
其实是一样的,所以要对循环的开始和结束进行限制
核心代码如下:
for(int i = 1; i < 100; i++){
for(int j = i; j <100; j++){
for(int n = j + 1; n < 100; n++){
if((i*i+j*j)==n*n){
System.out.println(i+"和"+j+"和"+n+"是一组勾股数");
}
}
}
}
运行结果截图:
码云链接
PSP时间
步骤 | 耗时(min) | 百分比 |
---|---|---|
需求分析 | 10 | 11% |
设计 | 20 | 22% |
代码实现 | 30 | 33% |
测试 | 10 | 11% |
分析总结 | 20 | 22% |