2018-2019-2 20175310 个人项目报告2--完全数

该博客围绕完全数展开,先给出完全数定义,即数等于其因子之和。需求是用Java语言实现相关程序,设计上要列举出指定范围内所有完全数。难点在于计算因子,最终采用两个循环嵌套的方法解决。还展示了核心代码、运行结果截图等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2018-2019-2 20175310 个人项目报告2--完全数

定义:

如果一个数恰好等于它的因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有812833550336等等。

需求分析:

根据完全数的定义,用Java语言进行设计实现。

设计实现:

这里我实现的是列举出1000以内所有的完全数。
伪代码如下:

1、本项目有两个循环,外部的循环i表示遍历`1-1000`的所有数
2、内部的循环`j`是用于计算数`i`除本身以外其他因子的和`sum`
3、判断`sum`是否与`i`相等,若相等则输出完全数i,否则`i++`,计算下一个数

难点总结:

这个程序的难点主要在于计算因子,我一开始没想到用两个for循环嵌套的方法,准备在第一个for循环里调用一个用于计算因子的类,然后再算因子的和。不过这种方法过于繁琐,绕了弯路,其实只需在for循环里再加个for循环,用取余看结果是否为0,判断是不是因子。
核心代码如下:

for (int i = 1; i <= 1000; i++) {
            // 表示因子之和
            int sum = 0;
            for (int j = 1; j < i / 2 + 1; j++) {
                // 如果i能被j整除
                if (i % j == 0) {
                    //sum就加上i的因子j
                    sum += j;
                }
            }
            // 如果sum与i相等,说明是完全数。
            if (sum == i) {
                System.out.println(i);
            }
        }

运行结果截图:

1591555-20190517223802529-1712317705.png

码云链接

PSP时间

步骤耗时(min)百分比
需求分析1011%
设计2022%
代码实现3033%
测试1011%
分析总结2022%

转载于:https://www.cnblogs.com/xicyannn/p/10884120.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值