编程题目:
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;
}
}
结果显示:
版权声明:本文为jsc123581原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。