题目:
一个数如果恰好等于它的因子之和,这个数就称为 "完数",
例如6=1+2+3。编程找出1000以内的所有完数。思路:
穷举法(简直就是万能的存在~)
代码:
package day5;
public class Perfectnumber {
public static void main(String[] args) {
System.out.println("1000以内所有的完数有:");
for(int i=1;i<10000;i++){ //遍历1000内的所有数
int t=0;
// 此for循环内,所有真因子直接相加。
for(int j=1;j<=i/2;j++){ //遍历找到所有因子
if(i%j==0){ //如果等于零,则j是i的一个因子
t=t+j; //所有因子相加
}
}
if(t==i){ //当此处的判断if跳出第二个for循环时,不用判断是否所有真 System.out.println(t);
}
}
}
}
总结:完数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所
有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果
一个数恰好等于它的因子之和,则称该数为“完数”。
穷举法求完数,主要就是用两个循环。外层循环遍历可能为完数的数,内层循环
遍历一个完数的所有的因子和。抓住完数的特征,这个题就迎刃而解了。