题解 | #完全数计算#

完全数计算

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

public class HJ56_完全数计算 {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    List<Integer> list = new ArrayList<>();  //用于存储得到的因数
    //System.out.println(getAllTheFactors(n,list));
    int total = 0; // 不超过n的的完全数的个数
    for(int x = 1;x<=n;++x){
      List<Integer> list1 = getAllTheFactors(x,list);
      int sum = 0;  //注意每次sum要清0,sum是用来存储每一个数的因数的和
      for(int i = 0 ;i<list1.size();++i){
        sum = sum + list1.get(i);
      }
      if(sum ==x){
        total++;
      }
    }
    System.out.println(total);
  }

  public static List<Integer> getAllTheFactors(int a, List<Integer> list){
    list.clear(); //记得每一次清空list,否则上一次的数据还会保存。不debug看不出来。
    for(int i=1;i<a;++i){
      while (a%i==0){
        list.add(i);
        break;  //不加这句就是死循环
      }
    }
    return list;
  }
}
全部评论

相关推荐

菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务