解题思路:
看注释,在座的各位有志青年!
注意事项:
参考代码:
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 人评分
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:3407 |
简单的a+b (C语言代码)浏览:745 |
钟神赛车 (C++代码)浏览:875 |
【出圈】 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:770 |
淘淘的名单 (C语言代码)答案错误???浏览:596 |
字符串比较 (C语言代码)答案错误????浏览:603 |
A+B for Input-Output Practice (V) (C语言代码)浏览:627 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:558 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:549 |