/**
* 获取完美数
* @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);
}
}
}
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还没想好。
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
己根据要求修改