int a[500050];
void sum_factors()
{
int i,j;
for(i=1;i<500050;i++)
for(j=1;j*i<500050;j++)
a[i*j]+=i;
}
N为1~500050,N的因子和为a[N]-N;如12的因子为1,2,3,4,6;因子和为16
//N按具体题目取
因子和计算与因子分解算法
本文探讨了如何计算一个数的因子和,并通过代码实现了一个优化的算法来求解因子和。对于每个数N(1到500050),通过遍历其可能的因子,将每个找到的因子累加到对应的数上,从而得到因子和。例如,对于数12,其因子和为所有因子(1, 2, 3, 4, 6)的总和,即16。
int a[500050];
void sum_factors()
{
int i,j;
for(i=1;i<500050;i++)
for(j=1;j*i<500050;j++)
a[i*j]+=i;
}
N为1~500050,N的因子和为a[N]-N;如12的因子为1,2,3,4,6;因子和为16
//N按具体题目取

被折叠的 条评论
为什么被折叠?
