完数java实现



import java.util.Scanner;


public class Perfect {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Scanner in=new Scanner(System.in);
        int num1=in.nextInt();
        int num2=in.nextInt();

//用数组实现输出各个完数时是空格,最后一个数没有空格。这里注意数组的长度是规定好的,不能通过数组的长度来实现数组的遍历,需要设置标志位记录数组的实际长度,还要注意个数是一个,没有时的特殊情况
        int[] a=new int[1000];
        int j=0;
        for(int i=num1;i<num2;i++){  
         if(perNum(i)){
          a[j]=i;
          j++;
         }
        }
        //System.out.println(j);
        if(j==0){System.out.println("NIL");}
        else if(j==1){
         System.out.println(a[0]);
        }else {
         for(int i=0;i<j;i++){
          System.out.print(a[i]+" ");
         }
         System.out.println(a[j-1]);
        }
//        for(int i=0;i<a.length-1;i++){
//         System.out.print(a[i]+' ');
//        }
       
 }
 //判断某个数是否是完数
public static boolean perNum(int num){
 int sum=0;
 boolean isPer=false;
 for(int i=1;i<num;i++){
  if(num%i==0){
   sum=sum+i;
  }
 }
 if(sum==num){
 isPer=true;
 }
 return isPer;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值