黑马程序员技术交流社区

标题: 帮忙看下代码哪里有误 [打印本页]

作者: 余尚勇    时间: 2013-6-18 01:09
标题: 帮忙看下代码哪里有误
本帖最后由 余尚勇 于 2013-6-18 22:25 编辑

高手帮忙看下代码哪里有误,打印出来什么都没有

//4.        编程实现 求1-1000内所有的完数(一个数如果恰好等于它的因子之和,这个数就称为“完数”。如6就是1个
            //完数: 6=1+2+3,因子数就是所有可以整除这个数的数,但是不包括这个数自身.比如15的因子数是 1 3 5)
            int sum = 0;
            for (int i = 1; i < 1000; i++)
            {
                for (int j = 1; j <= i / 2; j++)
                {
                    if (i % j == 0)
                    {
                        sum += j;
                    }
                }
                if (sum == i)
                {
                    Console.WriteLine(i + " ");
                }
                Console.ReadKey();
作者: 274997322    时间: 2013-6-18 01:37
     int sum = 0;
            for (int i = 1; i < 1000; i++)
            {
                sum = 0;    //sum一直在累加,重新算一个数的时候  需要重置
                for (int j = 1; j <= i / 2; j++)
                {
                    if (i % j == 0)
                    {
                        sum += j;
                    }
                }
                if (sum == i)
                {
                    Console.WriteLine(i + " ");
                }
            }
作者: y96352    时间: 2013-6-18 06:28
for (int i = 1; i < 1000; i++)
            {
                int sum = 0; //每次都要重置sum的值
                for (int j = 1; j <= i / 2; j++)
                {
                    if (i % j == 0)
                    {
                        sum += j;
                    }
                }
                if (sum == i)
                {
                    Console.WriteLine(i + " ");
                }
            }
                Console.ReadKey();
作者: 成都—陈超    时间: 2013-6-18 09:29
sum每次循环一个i 都要重置下 ,不然sum一直在累加,就不可能有数符合要求了
        for (int i = 1; i < 1000; i++)
            {
                 sum=0;             // 在第一层循环加上sum=0; 每次循环sum都重置
                for (int j = 1; j <= i / 2; j++)
                {
                    if (i % j == 0)
                    {
                        sum += j;
                    }
                }
                if (sum == i)
                {
                    Console.WriteLine(i + " ");
                }
                Console.ReadKey();
作者: 逆_水_寒    时间: 2013-6-18 21:08
把sum=0,在嵌套的那个for前面再写一遍,每次循环重置一下就行了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2