找出1000以内的完数

题目:
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3编程找出1000以内的所有完数(因子:除去这个数本身的其他约数)

考察嵌套循环的使用

代码实现:

public class ForForTest03 {
 
 public static void main(String[] args) {
  int total = 0;//因子之和
//  int sum = 0;//一行的输出
  for(int i = 2 ;i <= 1000;i++) {//i是被判断数
   // int total = 0;//因子之和
   for(int j = 1; j < i/2; j++) {//j是除数
    if( i % j == 0 ) {
     total += j;
    }
   }
   if( total == i) {//写在外循环
    System.out.print(i + "  ");
//    sum++;
   }
//   if(sum == 5) {
//    System.out.println();
//   }
   //重置total
   total = 0;
  }
  
 }

运行结果:

在这里插入图片描述

总结:

  1. 要注意某些代码写在外循环还是内循环
  2. 循环初始化和循环条件不要想得太复杂,基本大部分都是从小到大,注意停止条件
  3. total放在循环外要注意重置,要是放在外循环中,内循环上边,就不用重置
  4. 注掉的部分是我写的五个换行操作,不过输出只有三个哈哈哈,就注释掉了
  5. 算法优化:将 内循环的循环条件改为i/2,之前是i
  6. 来给自己比个yeah
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值