计算约数之和 公式
问题描述:
计算约数之和 公式
答
没有数学公式
你可以用下面的代码试一下,C语言
int main()
{
int a,i,s=1;
scanf("%d",&a);
for(i=2;i{
if(a%i==0)
s=s+i;
}
printf("%d\n",s);
return 0;
}
答
没有公式,只能尝试,确认是约数后再求和。
答
设一个数为A,分解质因数得
A=a1^b1 * a2^b2 * a3^b3 an^bn [a1 a2 a3 .表示不同的质因数 b1 b2 b3 表示每个质因数的次方数(即相同质因数的个数)]
则有:
A的约数的个数=(1+b1)(1+b2)(1+b3).(1+bn)
A的约数的总和=(1+a1+a1^2+a1^3+a1^4+.a1^b1)*(1+a2+a2^2+a2^3+a2^4+.a2^b2).(1+an+an^2+an^3+an^4+.an^bn)
举例说明白:
180=2^2*3^2*5
个数=(1+2)(1+2)(1+1)=18
总和=(1+2+4)(1+3+9)(1+5)=546