求因子和
题目描述:
一个数的因子和不包括它本身的所有因子之和,如12的因子有1、2、3、4、6所以12的因子和是16。现在给定一个数n(n<=10^9),求它的因子和。
输入格式:
一个数。
输出格式:
一个数。
样例输入:
样例输出:
提示:
60%的数据,n<=10,000;
80%的数据,n<=1,000,000;
100%的数据,n<=1,000,000,000;
这题第一次写的时候,一般人都会想到直接枚举,即直接从1一直枚举到该数除本身的最大因子。于是有了下面这一段代码:
#include <stdio.h>
int main()
{
long n, s = 0, x;
int i;
scanf("%ld", &n);
for (i = 1; i < n; i++) {
if (n % i == 0)
s += i;
}
printf(&#