为了账号安全,请及时绑定邮箱和手机立即绑定

求1000以内的完数

求1000以内的完数

Codeplayer 2016-04-19 12:52:40
public class HelloWorld {     public static void main(String args[]) { int sum=0,i,j; for(i=1;i<=1000;i++){        for(j=1;j<i;j++){       if(i%j==0){       sum=sum+j;       }       }       if(sum==i){       System.out.println(i);              }        } }}为什么将内for循环改为“for(j=1,sum=0;j<i;j++)”才正确,num=0不是开始就已经定义了吗?
查看完整描述

1 回答

?
Its_forever

TA贡献361条经验 获得超328个赞

进入第二个for循环的时候需要每次把sum置为0。

否则sum就一直累加走了,就不会找到正确的结果。

查看完整回答
反对 回复 2016-04-19
  • Codeplayer
    Codeplayer
    for循环中for(循环变初始化;循环条件;循环变量变化)。循环变量初始化不是只会执行一次吗?
  • Its_forever
    Its_forever
    对啊,所以我说的是第二个for循环的时候。第一个for循环的时候i=1不得变,但是第二个for循环是作为第一个for循环的循环体。sum每次都要重新赋值。其实这种最好就是自己debug跟踪一下,就很清楚了。望采纳。
  • 1 回答
  • 1 关注
  • 1650 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信