题解 | #完全数计算#

完全数计算

https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84

参考了(https://www.nowcoder.com/users/605763917)同学的方案,按照自己的理解加了一些注释。使用双重循环的方法找,这个过程完全就是莽 ~

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        /*
            这个过程就是暴力的,从 n 开始,一直往下找,直到找到 1 为止。
        */
        // 统计范围内完全数的数量
        int count = 0;
        // 定义一个 while 循环,从 num 开始一个一个往下找
        while (num > 0) {
            // 因子累加和的时候用
            int sum = 0;
            // i 从 1 ~ n 一个一个开始取模,只要等于0,就累加到 sum 上
            for(int i = 1; i < num; i ++) {
                if(num % i == 0) {
                    sum += i;
                }
                // 如果加到溢出来了,就直接跳出,其实也间接说明这个 n 不是完全数,完全数不会溢出来
                if(sum > num) {
                    break;
                }
            }
            // 判断当前的 num 和总和 sum 是否相同,相同则说明找到一个完全数,count++
            if(num == sum) {
                count ++ ;
            }
            // num - 1,找完 1000 该找 999、998、997...
            num --;
        }
        System.out.println(count);
    }
}

全部评论

相关推荐

牛客10001:G了+1,被前端/客户端给捞起来了,不太想面
投递美团等公司7个岗位 美团求职进展汇总
点赞 评论 收藏
分享
吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务