编程实现 求1-1000内所有的完数(一个数如果恰好等于它的因子之和,这个数就称为“完数”。
如6就是1个完数: 6=1+2+3,因子数就是所有可以整除这个数的数,但是不包括这个数自身.比如15的因子数是 1 3 5)
代码解决问题一般的思路都是遍历吧
这个的难点在于找出这些数的因子数,因子数的定义就是所有可以整除这个数的数,那么我们可以反过来,一个数a,它的n倍是数b,即b=a*n,那么b有a这个因子数
那么就可以遍历这些数,对于每个数都找出它的所有倍数,遍历完成后,将得到所有数的因子数
你可以把问题拆分来看
1、循环遍历1-1000
2、把每个数的因子求出来放在一个集合里面
3、遍历因子集合,并求和
4、如果求出的和等于当前遍历的数,记录
5、完成
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; } }