题解 | 完全数计算

完全数计算

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

import java.util.Scanner;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //完全数:它所有的真因子之和为自身
        int n = in.nextInt();
        int sum ,cnt = 0;
        //完全数以6或28结尾
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=6;i<=n;i++){
            if(i%10 == 6 || i%100 == 28){
                list.add(i);
            }
        }
        for(int x:list){
            sum = 1;
            int m = (int)Math.sqrt(x);
            for(int j=2;j<=m;j++){
                if(x%j==0){//数的因子分布在该数根号两边
                    int res = x/j;
                    if(res == m) sum+=j;//如果等于根号,只计算一次
                    else{
                        sum+=j+res;
                    }                    
                }
            }
            if(x==sum) cnt++;            
        }
       System.out.println(cnt);      
    }
}

全部评论

相关推荐

兄弟们你们进大厂靠的是什么项目啊
DOTPHTP:课设改。其实项目什么的如果不是实习里面的生产项目的话,建议✍️那种自己想要做的。突出个人自驱力,而不是为了找工作不得不随波逐流这种
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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