如何求一个数的所有因子之和?

如何求一个数的所有因子之和?

题目要求:
sxtc爱做数学题,今天他又拿到一道数学题:
给定n,求出
d∣n

d。

其中d∣n表示d是n的一个因子。

他希望擅长求和的你帮他解出这个求和问题。

输入格式:
读入一个数n。

输出格式:
输出求和结果。

输入样例:
在这里给出一组输入。例如:
114
输出样例:
在这里给出相应的输出。例如:
240
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

 只能正确一部分,其他的有超时有报错。真的很崩溃。

难道是负数也要讨论吗?求解!求优化算法。

你的代码呢?
循环求余判断余数为0就是因子,包括1和自己。

int main()
{
    int n,sum = 0;
    scanf("%d",&n);
    double r = sqrt(n);
    for(int i=1;i<r;i++)
    {
        if(n%i==0)
        {
            sum += i;
            if(i*i != n)
                sum += n/i;
        }
    }
    printf("%d\n",sum);
    return 0;
}