首页 新闻 搜索 专区 学院

怎么用c#代码来解决完数问题

0
[待解决问题]

编程实现 求1-1000内所有的完数(一个数如果恰好等于它的因子之和,这个数就称为“完数”。
如6就是1个完数: 6=1+2+3,因子数就是所有可以整除这个数的数,但是不包括这个数自身.比如15的因子数是 1 3 5)

海域公園的主页 海域公園 | 菜鸟二级 | 园豆:202
提问于:2014-06-20 00:06
< >
分享
所有回答(3)
0

代码解决问题一般的思路都是遍历吧

这个的难点在于找出这些数的因子数,因子数的定义就是所有可以整除这个数的数,那么我们可以反过来,一个数a,它的n倍是数b,即b=a*n,那么b有a这个因子数

那么就可以遍历这些数,对于每个数都找出它的所有倍数,遍历完成后,将得到所有数的因子数

诶碧司 | 园豆:1912 (小虾三级) | 2014-06-20 09:26
0

你可以把问题拆分来看

1、循环遍历1-1000

2、把每个数的因子求出来放在一个集合里面

3、遍历因子集合,并求和

4、如果求出的和等于当前遍历的数,记录

5、完成

刘宏玺 | 园豆:14016 (专家六级) | 2014-06-20 09:38
1
static void Main(string[] args)
        {
            int sum = 0;
            for (int i = 1; i <= 1000; i++)
            {
                for (int j = 1; j < i / 2 + 1; j++)
                {
                    if (i % j == 0 && j != i)
                    {
                        sum += j;
                    }
                }
                if (sum == i)
                    Console.WriteLine(i);
                sum = 0;
            }
        }

 

leerh | 园豆:207 (菜鸟二级) | 2014-06-20 11:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册