求这个JAVA编程题的答案,最好每一部都有解释

谢谢

/*
* 题目中1000以内的数,0不算。
* 而且,好像一个数的因子不包括它自身!
* 例如:6的因子是:1, 2, 3
*/

public class ff {
public static void main(String[] args) {

//定义一个整型变量sum
int sum = 0;

//这里是双重循环,从1到1000,逐个试验,
//如果是完全数的话就显示出来
for(int i=1; i<=1000; i++)
{
//处理数1这种特殊情况
if(i==1)
System.out.println(1);

//找出那个数的因子,并求和
for(int j=1; j<i; j++)
{
//如果i除以j的余数为0,说明j是i的因子,马上进行求和
if(i%j==0)
sum = sum + j;
}

//如果因子的和等于那个数,那么那个数是完全数,输出
if(sum == i){
System.out.println(i);
}

//把用过的sum的值初始化为0,再次使用
sum = 0;
}

}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-02
求1000以内的完全数的程序如下:(每一步都有注释)
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本回答被提问者采纳
第2个回答  2012-01-01
题目呢???
第3个回答  2012-01-01
貌似 好像没题,还是我没有找到啊@
第4个回答  2012-01-01
……你把题发出来……
相似回答