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;
	}
}

結果顯示:

在這裏插入圖片描述

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