若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。简称“完数”
例如,
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
import java.util.Scanner;
/**
* Created by Administrator on 2017/6/23.
*/
/*
求1到1000以内的完数
所谓的完数是指一个数恰好等于它的所有因子之和
例如:6=1+2+3
*/
public class PerfectNumber {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String inputStr = in.next();
int inputNo = Integer.parseInt(inputStr);
System.out.print("1到" + inputNo + "的完数有: ");
fun(inputNo);// 调用静态方法
}
/*
* 要在main()方法中调用fun()方法, 那么fun()方法必须为static型的
*/
public static void fun(int inputNo) {
for (int i = 1; i <= inputNo; i++) {
int temp = 0;// 定义因子之和变量
for (int n = 1; n < i / 2 + 1; n++) {
if (i % n == 0) {
temp += n;// 能被整除的除数则被加到temp中
}
}
if (temp == i) {// 如果因子之和与原数相等的话,说明是完数
System.out.print(i + " ");// 输出完数
}
}
}
}