解题思路:
看注释,在座的各位有志青年!
注意事项:
参考代码:
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 人评分
点我有惊喜!你懂得!浏览:1336 |
C语言程序设计教程(第三版)课后习题8.3 (Java代码)浏览:1367 |
Biggest Number (C++代码)回溯法浏览:1612 |
C语言训练-斐波纳契数列 (C语言代码)浏览:1165 |
A+B for Input-Output Practice (VI) (C++代码)浏览:413 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:377 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1327 |
关于C语言变量位置的问题浏览:272 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:664 |