题解 | #完全数计算#

完全数计算

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);
    }
}

全部评论

相关推荐

2025-12-27 22:35
门头沟学院 Java
点赞 评论 收藏
分享
2025-12-04 18:18
山东师范大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务