Java版求1000以内的完全数

/* 
 * 若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数,简称完数。 
 * 例如:6=1+2+3。
 * 题目:求1000以内的完全数。
 */
public class PerfectNumber {
	
	// 数字上限
	static Integer limit = 1000;

	public static void main(String[] args) {
		System.out.println(limit + "以内的完全数有:");
		fun(limit);
	}

	public static void fun(Integer limit) {
		for (int i = 1; i <= limit; i++) {
			// 定义真因子之和变量
			int sum = 0;
			for (int j = 1; j < i / 2 + 1; j++) {
				// 如果当前数能被整除
				if (i % j == 0) {
					sum += j;
				}
			}
			// 如果真因子(即除了自身以外的约数)的和恰好等于它本身,说明是完全数。
			if (sum == i) {
				System.out.println(i);
			}
		}
	}
}

输出结果:

1000以内的完全数有:
6
28
496

 

posted on 2016-04-16 20:41  巧克力键盘  阅读(1506)  评论(1编辑  收藏  举报