44.编程找出1000以内的所有完数

编程题目:

44.一个数如果恰好等于它的因子之和,这个数就称为”完数”。 例如6=1+2+3.编程找出1000以内的所有完数。

示例代码:

package program.calculation.exercise44;

/**
* 44.一个数如果恰好等于它的因子之和,这个数就称为"完数"。 
* 例如:6=1+2+3。编程找出1000以内的所有完数。
* 概念:
* 某自然数除它本身以外的所有因子之和等于该数,则该数被称为完数。
* 因子就是所有可以整除这个数的数,不包括这个数自身。
* 因数包括这个数本身而因子不包括,例如:15的因子是1,3,5 而因数为1,3,5,15。
* 完数是指此数的所有因子之和等于此数,例如:28=1+2+4+7+14。
*/

public class PerfectNumber {
	public static void main(String[] args) {
		
		System.out.println("1000以内的所有完数:");
		getPerfectNumber();
		
	}

	//求完数
	private static void getPerfectNumber() {
		
		int count = 0;
		for(int i=1;i<1000;i++){//完数范围
			if(isPerfectNumber(i)){
				count++;
				System.out.println(i);
			}
		}
		System.out.println("总共有"+count+"个!");
		
	}

	//判断是否是完数
	private static boolean isPerfectNumber(int number) {
		
		int sum = 0;
		for(int i=1;i<number;i++){//因子的范围
			if(number%i == 0){//判断是否是因子(不相等但可整除)
				sum += i;
			}
		}
		if(sum == number){//完数等于它除本身因数外的所有因子的和
			return true;
		}
		
		return false;
	}
}

结果显示:

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章