10000以内的完美数用Java以6=1+2+3的形式显示怎么编写啊

2024-12-17 06:25:30
推荐回答(3个)
回答1:

/**
     * 获取完美数
     * @param num
     */
    public static void getPerfectNumber(int num) {
        if (num <= 0) {
            return;
        }
        int total = 0;
        for (int i = 1; i <= num; i++) {
            total = 0;
            for (int j = 1; j <= i; j++) {
                if (i % j == 0) {
                    if(i != j){
                        total += j;
                    }
                }
            }
            if(total == i){
                System.err.println("完美数:"+i);
            }
        }
    }

回答2:

public class Test22 {
public static void main(String[] args) {
int temp = 0;
for(int i=1;i<200;i++){
temp +=i;
if(temp<10000){
System.out.println("完美数"+temp);
System.out.println(temp+"是第"+i+"个完美数");
}
}

}

}因为1加到100是5050,所以n<200这个范围肯定已经超过10000了,
完美的控制这个n还没想好。

回答3:

public class ProfectNumber {
public static void main(String[] args) {
for (int i = 1; i < 10000; i++) {
int sum = 0;
String out="";
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
out+=j+"+";
}
}
if (sum == i) {
//System.out.println(i);
System.out.println(sum+"="+out.substring(0,out.length()-1));
}
}
}
}

结果:
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064
己根据要求修改