2018-2019-2 20175310 个人项目报告5--勾股数

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,cb,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%
posted @ 2019-05-26 19:49  20175310xcy  阅读(205)  评论(0编辑  收藏  举报