A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余尚勇 中级黑马   /  2013-6-18 01:09  /  1459 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余尚勇 于 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();

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
     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 + " ");
                }
            }

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
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();

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
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();

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
把sum=0,在嵌套的那个for前面再写一遍,每次循环重置一下就行了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马