用JAVA语言编写下面的题目: 一个数如果恰好等于它的因子之和,这个数称为“完数”。编写一个应用程

用JAVA语言编写下面的题目:一个数如果恰好等于它的因子之和,这个数称为“完数”。编写一个应用程序,求1000之内的所有完数。... 用JAVA语言编写下面的题目:
一个数如果恰好等于它的因子之和,这个数称为“完数”。编写一个应用程序,求1000之内的所有完数。
展开
 我来答
紫薇参星
科技发烧友

推荐于2017-11-22 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3609万
展开全部

按照你的要求打印1000以内完数的Java程序如下:

public class WanQuanShu {
 public static void main(String[] args) {
  int i,j,k;      //定义整型变量i,j,k 用于for循环
  int []sector=new int[32];     //定义整型数组用于存放完全数的每个因子
  for(i=1;i<=1000;i++){         //for循环寻找1000以内的完全数  
   int sum=1;                //定义整型变量sum用于保存完全数因子的和
   int sectorcount=1;        //定义整型变量sectorcount用于完全数因子个数计数
   sector[0]=1;     //初始化数组的第一个元素,因为1特殊所以要单独赋值
   for(j=2;j<i;j++){//for循环找出从2到i的数i的所有因子
    if(i%j==0){           //看i能不能被j整除,如果能即等于0则j是数i的一个因子
     sector[sectorcount++]=j;  //把因子j赋给存放完全数因子的数组sector
     sum=sum+j;                //把数i的因子j都累加起来
    }
   }
   
   if(i==sum){      //如果数i和它的因子的和相等,那么i就是完全数
    System.out.print(i+"=");    //打印输出完全数
    for(k=0;k<sectorcount;k++){ //for循环列出全部完全数i的全部因子
     if(k==sectorcount-1){   //如果是最后一个因子则打印最后一个因子
      System.out.print(sector[k]); //打印最后一个因子
     }else{                           //否则打印其他因子和加号
      System.out.print(sector[k]+"+");//打印其他因子和加号
     }
    }
    System.out.println();               //打印换行符
   }
  }
 }
}

运行结果:

1=1
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248

追问
1不是完数,唉😔
匿名用户
2016-04-14
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laobaitu0322
2016-04-14 · TA获得超过744个赞
知道小有建树答主
回答量:900
采纳率:33%
帮助的人:646万
展开全部
public class demo
{
static boolean IsPerfectNum(int n)
{
int sum = 0;
for(int i = 1; i < n; i++)
if(n % i == 0)
sum += i;
return sum == n;
}

public static void main(String[] args)
{
for(int i = 1; i < 1000; i++)
if(IsPerfectNum(i))
System.out.println(i);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式