
用Java语句输出1到10000内的完全数遇到的问题
publicclasswanquanshu{publicstaticvoidmain(String[]args){inti,j;intsum=0;for(i=1;i<=1...
public class wanquanshu {
public static void main(String[] args)
{ int i,j;
int sum=0;
for(i=1;i<=10000;i++)
{
for(j=1;j<=i/2;j++)
{ if(i%j==0)
sum+=j;}
if(sum==i)
System.out.println(i);}
}
}
上面是我编写的程序,,但是在eclipse里面运行不出结果,,我在上网查了一下,发现把int sum=0;放在第一个for语句下面就可以运行出结果,,这有什么不同么 展开
public static void main(String[] args)
{ int i,j;
int sum=0;
for(i=1;i<=10000;i++)
{
for(j=1;j<=i/2;j++)
{ if(i%j==0)
sum+=j;}
if(sum==i)
System.out.println(i);}
}
}
上面是我编写的程序,,但是在eclipse里面运行不出结果,,我在上网查了一下,发现把int sum=0;放在第一个for语句下面就可以运行出结果,,这有什么不同么 展开
1个回答
展开全部
首先,这是完全不同的,写在第一个for里面那么,第一个循环每运行一次就将 sum初始化一下,而照你这么写sum值在每得到一个完全数,sum的值就会将这个完全数加上,,所以呢,你这个只能输出第一个完全数,后面的都没有,,,,其实用true,false判断比这个好很多,在第二个循环之前初始化一下,,不然sum就会保持之前的状态,,,当然你讲if判断里面的sum+=j改成sum=j也可以,,可以成功
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询