• 题目描述
    求自然数N的所有约数之和。

  • 输入描述:
    输入一行,包含一个正整数n,范围在10000以内

  • 输出描述:
    输出一行,包含一个整数.

  • 示例1
    输入:10
    输出:18

  • 解题思路:
    若 p 为 n 的一个约数,则 q = n / p,为 n 的另一个约数。则令 i 从1开始,每次迭代自增1,结束条件为:i * i < n。则在满足 n mod i = 0 时,i 与 n / i 均为 n 的约数,且 i < n / i。最后还要判断 i * i = n 的情况,若为真则需加上 i 。

  • C# 代码:

    using System;
    class Program{
      static void Main(){
          string input;
          while((input = Console.ReadLine()) != null){
              int n = int.Parse(input);
              int sum = 0;
              int i = 1;
              for(; i*i < n; i++) if(n%i == 0) sum += n/i+i;
              if(i*i == n) sum += i;
              Console.WriteLine(sum);
          }
      }
    }