編程題目:
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;
}
}