杨雨彤


私信TA

用户名:dotcpp0724648

访问量:1838

签 名:

慢慢理解世界,慢慢更新自己

等  级
排  名 4789
经  验 1576
参赛次数 0
文章发表 20
年  龄 21
在职情况 学生
学  校 大庆师范学院
专  业 软件工程

  自我简介:

解题思路:
看注释,在座的各位有志青年!
注意事项:

参考代码:

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;

/**
 * @Author:杨雨彤
 * @date:2024/1/9 20:42
 */
public class daydayone {
    public static void main(String[] args) {
       Scanner scan=new Scanner(System.in);
       int N=scan.nextInt();
        for (int i = 2; i <=N ; i++) {
            HashSet<Integer>hs=new HashSet<>();//HashSet集合 元素不可重,非常适用
            hs.add(1);//1是所有数的因子,默认添加进去
            int sum=0;//记录所有因子之和
            for (int j = 2; j*j<=i ; j++) {//找i的所有因子,因为1已经加进hs里了,所以因子从2开始找,
                                                     //因为找到一个其实也就找到另一个,所以j小于等于根号下i就可以了
                                                    //另一半不要继续找咯
                if(i%j==0){//如果是i的因子
                    hs.add(j);//加进集合里
                    hs.add(i/j);//同时把另一个因子也加进去
                }
            }
            for (Integer a:hs) {
                sum+=a;//遍历集合中所有因子并加和
            }
            Object[] array= hs.toArray();//因为hs集合中元素顺序不是递增的,所以先转成数组,再排个序
            Arrays.sort(array);//快排 哈哈不会有人以为我要手写冒泡排序吧,拜托大家就是成熟的敲字工了,谁还不会点偷鸡方法呀
            if(sum==i){//如何i是完数
                System.out.print(i+" its factors are ");
                for (int j = 0; j < array.length ; j++) {
                    System.out.print(array[j]+" ");
                }
                System.out.println();
            }
        }
    }
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区