题目:
一个数如果恰好等于它的因子之和,这个数就称为"完数"
(因子:除去这个数本身正的约数)
例如6=1+2+3.编程 找出1000以内的所有完数
问题:
1.一个数他的所有因子如何求?
for(int i = 1;i <=1000;i++)//这1000个数中,每执行一次,得到一个数,要么存在完数,要么为0; { for(int j=1;j<i;j++) {//这个得到的结果是一个数的所有因子相加 if(i%j==0)//因子:除去这个数本身正的约数 factor+=j;//因子相加 } if(factor == i) {//如果这个因子之和等于它本身,则它是完数 System.out.println("完数为:"+i); count++; } factor=0; }
完整代码:
package demo; public class Test15{ static int count; public static void main(String[] args) { int factor=0; for(int i = 1;i <=1000;i++)//这1000个数中,每执行一次,得到一个因子,要么存在,要么为0; { for(int j=1;j<i;j++) {//这个得到的结果是一个数的所有因子相加 if(i%j==0)//因子:除去这个数本身正的约数 factor+=j;//因子相加 } if(factor == i) {//如果这个因子之和等于它本身,则它是完数 System.out.println("完数为"+i); count++; } factor=0; } System.out.println("0到1000所有完数的为:"+count+"个"); } }