题目描述
求自然数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); } } }