一个数如果恰好等于它的因子之和,这个数就称为”完数”. 分别编写一个应用程序和小应用程序求1000之内的所有完数.
class wan{
           public static void main(String args[]){
              int n,i,j=0;
              for(n=2;n<1001;n++){              //就这地方出错了
              for(i=1;i<n;i++)
              if(n%i==0)
              j=j+i; 
              if(j==n)
              System.out.println(n+"是完数");} 
           
  }
}
结果没输出
class wan{
           public static void main(String args[]){
              int n=6,i,j=0;
              
              for(i=1;i<n;i++)
              if(n%i==0)
              j=j+i; 
              if(j==n)
              System.out.println(n+"是完数");
           
  }
}
有结果希望大哥大姐告诉我为什么,谢谢了

解决方案 »

  1.   

    外层for循环这内,内层for循不之外加一句:
    j = 0;
    因为对每一个应该把j复位一下,呵呵。
      

  2.   

    for(int i=1;i<=1000;i++){
          int sum=0;
          String str="";
          for(int j=1;j<=i/2;j++){
            if(i%j==0){
              sum=sum+j;
              str=str+j+"+";
            }
          }
          if(i==sum){
            str=str.substring(0,str.length()-1);
            System.out.println(str+"="+i+"是完数");
          }
        }