解题思路:
看注释,在座的各位有志青年!
注意事项:
参考代码:
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语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:541 |
C语言考试练习题_保留字母 (C语言代码)浏览:743 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:756 |
企业奖金发放 (C语言代码)浏览:2459 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:689 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:587 |
C语言训练-字符串正反连接 (C语言代码)浏览:653 |
小O的乘积 (C++代码)浏览:545 |
逆反的01串 (C语言代码)浏览:1527 |
C二级辅导-公约公倍 (C语言代码)浏览:693 |