一个数如果恰好等于它的因子之和,这个数就称为”完数”,例如:6的因子是1,2,3,而
6=1+2+3,因此6是完数.编写一个程序找出1000之内的所有完数,并在每行按如下的
形式输出: 6的因子是: 1,2,3. 程序如下:
public class wanshu{
public static void main(String args[]){
int i,j,k;
int a[];//定义一个数组,用来存放某个数的因子
a=new int[100];//实例化数组
a[0]=0;//让数组的第一个数为0
a[1]=1;//让数组的第二个数为1,因为某个数=1+第一个因子+第二个因子
for(i=2;i<=1000;i++)
{
for(j=1;j<=i;j++)//以下的语句用来求某个数的因子,我想这个算法有错误
{
k=i%j;
if(k==0)
{i=i/j;
a[j]=i;
}
if(a[j]<(j+1))
break;
}
for(j=1;j<=i;j++)
System.out.println(i+"的因子是:"+a[j]+",");
}
int n=0;
n=1+n;
for(i=1;i<=1000;i++)//用来判断是否是完数:i=1+第一个因子+第二个因子,等
for(j=1;j<=i;j++)
{n=n+a[j];
if(i==n)
System.out.println(i);//如果是就打印输出
else
break;}
}
}
呵呵!不好意思我有来麻烦大家拉!这个程序算法有一定的难度,我的哪个程序我觉得有算法上的错误,大家能不能帮我看一下?我已经思考了两天,最后还是做不出来!哦,请各位高手帮忙拉!