穷举法求1000内所有完数

题目: 

 一个数如果恰好等于它的因子之和,这个数就称为 "完数",

  例如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),又称完美数完备数,是一些特殊的自然数。它所

有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果

一个数恰好等于它的因子之和,则称该数为“完数”

      穷举法求完数,主要就是用两个循环。外层循环遍历可能为完数的数,内层循环

一个完数的所有的因子和。抓住完数的特征,这个题就迎刃而解了。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值