用JAVA语言编写下面的题目: 一个数如果恰好等于它的因子之和,这个数称为“完数”。编写一个应用程
用JAVA语言编写下面的题目:一个数如果恰好等于它的因子之和,这个数称为“完数”。编写一个应用程序,求1000之内的所有完数。...
用JAVA语言编写下面的题目:
一个数如果恰好等于它的因子之和,这个数称为“完数”。编写一个应用程序,求1000之内的所有完数。 展开
一个数如果恰好等于它的因子之和,这个数称为“完数”。编写一个应用程序,求1000之内的所有完数。 展开
3个回答
展开全部
按照你的要求打印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不是完数,唉😔
展开全部
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询