求助!编写应用程序, 求1000之内的所有完数

一个数如果恰好等于它的因子之和,这个数就称为“完数”。
我这样写的,不知道错在哪里:
public class ABC
{ public static void main(String args[])
{ int n,i,sum=0;

for(n=1;n<=1000;n++)
{
for(i=1;i<n;i++)
{
if(n%i==0)
sum+=i;
}
if(n==sum)
System.out.println(n+"是完数");
}

}
}

表面上看是sum=0的位置不同,但实质上,是n在1000以内进行循环时,每次开始都要先将sum重新赋值为0。因为sum是用来求因子的和的么~如果不重置为0,不就越加越大了^_^
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-30
public class wanshu {
public static void main {String [ ] args) {
int n, i, sum=0;
for(n=1;n<=1000;n++){
for (i=1;i<n;i++){
if(n%i==0)
sum=sum+i;

if (sum==n)
System.out.println (n+" ");
sum=0;


第2个回答  2012-10-21
java输入数据要用import.util.java.Scanner;这个数据包,你用c的方法怎么行啊?java书本去看看追问

我们没有这个的啊
public class ABC
{ public static void main(String args[])
{ int n,i,sum;

for(n=1;n<=1000;n++)
{ sum=0;//sum=0在这就对了啊,为什么啊
for(i=1;i<n;i++)
{
if(n%i==0)
sum+=i;
}
if(n==sum)
System.out.println(n+"是完数");
}

}
}

这样就对了

相似回答